View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0001569 | T99X171.00 SKB Eagle | SW Issue | public | 2022-11-29 19:00 | 2025-07-04 16:55 |
| Reporter | (ALTech) Younkwang Jung | Assigned To | (SW) Willin Deng | Due Date | 2024-09-04 17:48 |
| Priority | normal | Severity | s4-minor | Reproducibility | have not tried |
| Status | closed | Resolution | fixed | ||
| Summary | 0001569: [Smart3][ATV10][VoC] RCU OK button not working | ||||
| Description | Hi Kerwin An issue with the RCU OK button not working was observed in the VoC. (VoC increased) https://jira.skbroadband.com/browse/BFXBTF-484 While reviewing the VoC logs, please review the log attached here first. The OK button was pressed in the dmesg, but the keycode is missing in the main.log. Please check it urgently. Thank you YK.Jung | ||||
| Tags | No tags attached. | ||||
| Attach Tags | |||||
| User List |
|
|---|
|
|
|
|
|
Hi Kerwin Please review the attached log file. KEYCODE_DPAD_CENTER is observed in dmesg, but it is not observed in main.log Please check it urgently. Thank you YK.Jung |
|
|
Hi YK, I see there are some messages from Google Assistant. It looks like key events are not sent to frameworks while GA is running. However, I don't understand why it says "mic open error". Please check log below 11-25 11:54:14.783 4289 4311 I AtvRemote.VoiceOverBle: Ongoing audio session cannot be interrupted 11-25 11:54:14.784 4289 4311 W AtvRemote.VoiceOverBle: Received mic open error without pending session: F01 .... 11-25 11:54:42.087 4289 4311 I AtvRemote.VoiceOverBle: Ongoing audio session cannot be interrupted 11-25 11:54:42.087 4289 4311 W AtvRemote.VoiceOverBle: Received mic open error without pending session: F01 |
|
|
Hi Kerwin First of all, I will report to SKB that the analysis is in progress. Please update it as soon as it is analyzed. Thank you!! |
|
|
HI Kerwin The today VoC meeting with SKB was over and we need an update on this issue within today. Please check it Thank you!! YK.Jung |
|
|
Hi YK, For 2nd log files, we don't find useful information. We don't change RCU related function for a long time. What is changed recently on Smart3 ? 1. In dmesg.txt, you can see many "key down" events. But "main.log.1" started at '11-25 17:43:40', you can ignore "key down" events in dmesg.txt before '11-25 17:43:40'. 2. We see POWER key at '17:47:03'. From main.log.1, STB was going to sleep mode. So e can also ignore 'key down' events till '17:49:22'. However, I have no idea why user still use RCU to operate STB. =========================================================================================== [Fri Nov 25 17:47:03 2022] key down 116 11-25 17:47:03.970 13469 13709 I BtvKeyEvent[6]-2022.06.23: checkBtvKeyCode outKeyCode : 26, name : 26 ... 11-25 17:47:04.126 13469 15360 I STBAPIManager: sleep() called ... =========================================================================================== 3. After STB waked up, there were several key events. But I don't find useful information from main.log file. ================================================================================= [Fri Nov 25 17:49:22 2022] key down 116 11-25 17:49:22.620 13469 13710 I BtvKeyEvent[6]-2022.06.23: checkBtvKeyCode outKeyCode : 26, name : 26 .. 11-25 17:49:22.640 13469 13469 I STBAPIManager: wakeup() called .. [Fri Nov 25 17:49:30 2022] key down 232 [Fri Nov 25 17:49:32 2022] key down 232 [Fri Nov 25 17:49:32 2022] key down 232 [Fri Nov 25 17:49:32 2022] key down 232 ===> no corresponding events in main.log [Fri Nov 25 17:49:32 2022] key down 106 11-25 17:49:33.219 3839 3933 I WindowManager: interceptKeyTi keyCode=22 down=true repeatCount=0 keyguardOn=false canceled=false policyFlags=1644167168 mDeviceId=43 mSource=1793 mScanCode=106 mCharacters=null [Fri Nov 25 17:49:33 2022] key down 232 ===> no corresponding event in main.log [Fri Nov 25 17:52:02 2022] key down 172 11-25 17:52:02.852 3839 3933 I WindowManager: interceptKeyTi keyCode=3 down=true repeatCount=0 keyguardOn=false canceled=false policyFlags=1644167168 mDeviceId=43 mSource=1793 mScanCode=172 mCharacters=null [Fri Nov 25 17:52:02 2022] key down 304 11-25 17:52:02.999 3839 3933 I WindowManager: interceptKeyTi keyCode=397 down=true repeatCount=0 keyguardOn=false canceled=false policyFlags=1644167168 mDeviceId=43 mSource=1793 mScanCode=304 mCharacters=null =========================================================================================== |
|
|
HI Kerwin INTEK is also observing this issue, however, the FXN model is occurring more than 12 times compared to INTEK. so SKB suspects that there is a difference in handling RCU key. And it seems to be observed from v15.534.28 version. (BFX-AT100_5.3.4a_2022-0818-165127.xml) (this version has been deployed in the field.) I have two questions 1) there is an ok button log in kernel (dmesg). Is there a possibility that this is an RCU HW issue? 2) Is it possible to check whether the key event was delivered to the Android system after receiving the OK button? We need to find out where it disappeared. There are several more logs in JIRA, so please check them. (20221125_BFX-AT100_Log (2).zip) I will let you know if there is any additional information. Thank you!! |
|
|
HI Kerwin There is a VoC meeting at 5pm(KoreaTime) today. At that time, I need to report the progress on this issue again. please review the addition of logs to determine the cause and improvement for this issue. Please update the progress by 4 pm(KT) again. Thank you!! |
|
|
Hi YK, Please check analysis result so far: 1. 0130000013_20221129_4C_D5_77_FE_8B_B7 => no "key down 232" im dmesg.txt, suppose BT RCU is disconnected 2. 0130000013_20221129_38_D5_7A_DA_35_E5 => key matches, DPAD_CENTER is found in log. =================== 38_D5_7A_DA_35_E5 logs ============================================ [Fri Nov 25 09:13:34 2022] key down 106 11-25 09:13:35.503 3870 4007 I WindowManager: interceptKeyTi keyCode=22 down=true repeatCount=0 keyguardOn=false canceled=false policyFlags=1644167168 mDeviceId=366 mSource=1793 mScanCode=106 mCharacters=null [Fri Nov 25 09:13:35 2022] key down 106 11-25 09:13:35.997 3870 4007 I WindowManager: interceptKeyTi keyCode=22 down=true repeatCount=0 keyguardOn=false canceled=false policyFlags=1644167168 mDeviceId=366 mSource=1793 mScanCode=106 mCharacters=null [Fri Nov 25 09:13:35 2022] key down 232 11-25 09:13:40.588 3870 4007 I WindowManager: interceptKeyTi keyCode=23 down=true repeatCount=0 keyguardOn=false canceled=false policyFlags=1644167168 mDeviceId=2 mSource=1793 mScanCode=232 mCharacters=null [Fri Nov 25 09:13:37 2022] key down 232 11-25 09:14:49.830 3870 4007 I WindowManager: interceptKeyTi keyCode=23 down=true repeatCount=0 keyguardOn=false canceled=false policyFlags=1644167168 mDeviceId=2 mSource=1793 mScanCode=232 mCharacters=null ====================================================================== 3. For "0130000101_20221129_4C_D5_77_FE_8B_B7" and "0130000101_20221129_4C_D5_77_FF_CB_83", there are mismatched key between kernel and logcat files. I don't have any idea about root cause so far. |
|
|
HI Kerwin Today's VoC meeting is over. Please proceed with the analysis as much as possible and review how to solve it if there are no results. Thank you YK.Jung |
|
|
Hi Kerwin I need to update the status one more time by today. Please update the contents by 4 PM (KT) Thank you YK.Jung |
|
|
Hi YK, We don't find useful information in log files. Please help to get more information from field users, such as when the issue start/end, Does it happen on a specific UI ? I think it will help to reproduce the issue. BTW, we can enable debug message in Android framework. But I don't know how can you update user's FW to get logs. in frameworks/native/libs/input/KeyLayoutMap.cpp, there are "DEBUG_PARSER", "DEBUG_MAPPING" flags. |
|
|
Hi Kerwin I have two questions 1) you reviewed it with the code, but you couldn't find the cause. is it correct ? 2) Is it possible to debug this issue enough if fxn enable the debug flags? Thank you!! |
|
|
Hi Kerwin I requested more information to SKB and please answer 2 questions. we may need to prepare FW for temporary deployment. Thank you!! |
|
|
Hi Kerwin Please analyze the log attached here. SKB manager is said to have an issue on the weekend. I will let you know more details after checking. Thank you!! |
|
|
Hi YK, Please check answers below: 1) you reviewed it with the code, but you couldn't find the cause. is it correct ? => FXN add kernel driver for BT key handling. From log files, the driver report key code to Android Framework correctly. It is possible key event is missing in Android Framework due to some reasons. But we don't see useful information in log files. 2) Is it possible to debug this issue enough if fxn enable the debug flags? => The flag will print key code mapping in Android Framework. But we can't make sure it is enough for this issue. Is it possible to ask user to check "OK" button in other Google application, such as YouTube, Google Settings ? We need to know if this is a system or app related issue. Thank you ! |
|
|
Hi Kerwin "From log files, the driver report key code to Android Framework correctly." => Please let me know the contents of this log. The reproduction method in SKB manager was as follows. Only one time has been reproduced. 1) Playing VOD for a long time 2) press Home 3) then the direction key works while the Home menu is displayed, but the OK button does not work. the QA team is reproducing the same step. Thank you!! |
|
|
Hi YK, Kernel driver pass scan code '232' to framework and then framework maps it to 'DPAD_CENTER' in key layout files. From dmesg.txt, kernel driver did report '232' to framework correctly. Below is how kernel driver report scan code to system. ================================================== static void key_down (...) { ... if (DBG) printk(KERN_WARNING "key down %d\n", key); input_report_key(dev->input_handle, key, 1); input_sync(dev->input_handle); ... } |
|
|
Hi Kerwin This is a different issue during the test I checked the log because the RCU button didn't work for a while. A parity check error code was observed for a while after "atvr_remove: hdev->name = BRM_BA02_003 removed, num 1->0" Please review this log as well. ============================================================================= ... [Thu Dec 8 13:55:18 2022] v4lvideo: provider name: vdec.h264.00 [Thu Dec 8 13:55:18 2022] v4lvideo:[0]di release1 get=395687, put=395107, release=576 [Thu Dec 8 13:55:18 2022] release: alloc=688, release=680 [Thu Dec 8 13:55:18 2022] binder: 3524:3780 transaction failed 29201/-1, size 32-0 line 3149 [Thu Dec 8 13:55:18 2022] type=1400 audit(1670475319.116:84296): avc: denied { read } for comm="btvservice@1.0-" name="fczlasttime" dev="tmpfs" ino=40195 scontext=u:r:btvservice_hal:s0 tcontext=u:object_r:tmpfs:s0 tclass=file permissive=0 [Thu Dec 8 13:55:18 2022] type=1400 audit(1670475319.452:84297): avc: denied { call } for comm="ATVRemoteAudioH" scontext=u:r:hal_audio_amlogic:s0 tcontext=u:r:rc_server:s0 tclass=binder permissive=0 [Thu Dec 8 13:55:19 2022] atvr_remove: hdev->name = BRM_BA02_003 removed, num 1->0 [Thu Dec 8 13:55:19 2022] binder: 3524:3780 transaction failed 29201/-1, size 32-0 line 3149 [Thu Dec 8 13:55:19 2022] type=1400 audit(1670475319.880:84298): avc: denied { call } for comm="ATVRemoteAudioH" scontext=u:r:hal_audio_amlogic:s0 tcontext=u:r:rc_server:s0 tclass=binder permissive=0 [Thu Dec 8 13:55:19 2022] type=1400 audit(1670475320.084:84299): avc: denied { read } for comm="btvservice@1.0-" name="u:object_r:default_prop:s0" dev="tmpfs" ino=10790 scontext=u:r:btvservice_hal:s0 tcontext=u:object_r:default_prop:s0 tclass=file permissive=0 [Thu Dec 8 13:55:25 2022] meson-remote ff808040.rc: invalid custom:0xff [Thu Dec 8 13:55:25 2022] meson-remote ff808040.rc: cur_custom is nulll [Thu Dec 8 13:55:25 2022] meson-remote ff808040.rc: no valid key to handle [Thu Dec 8 13:55:25 2022] meson-remote: parity check error code=0xcf [Thu Dec 8 13:55:25 2022] meson-remote ff808040.rc: invalid custom:0x0 [Thu Dec 8 13:55:25 2022] meson-remote ff808040.rc: cur_custom is nulll [Thu Dec 8 13:55:25 2022] meson-remote ff808040.rc: no valid key to handle [Thu Dec 8 13:55:25 2022] meson-remote ff808040.rc: invalid custom:0xff [Thu Dec 8 13:55:25 2022] meson-remote ff808040.rc: cur_custom is nulll [Thu Dec 8 13:55:25 2022] meson-remote ff808040.rc: no valid key to handle [Thu Dec 8 13:55:25 2022] meson-remote: parity check error code=0x33f [Thu Dec 8 13:55:25 2022] meson-remote ff808040.rc: invalid custom:0x0 [Thu Dec 8 13:55:25 2022] meson-remote ff808040.rc: cur_custom is nulll [Thu Dec 8 13:55:25 2022] meson-remote ff808040.rc: no valid key to handle [Thu Dec 8 13:55:26 2022] meson-remote ff808040.rc: invalid custom:0xff [Thu Dec 8 13:55:26 2022] meson-remote ff808040.rc: cur_custom is nulll .... ================================================================= Thank you YK.Jung |
|
|
Hi Kerwin Please ignore the above log first. There seems to have been a little problem with the test environment. I will let you know after checking again. Thank you YK.Jung |
|
|
Hi Kerwin Please give us your(FXN) opinion on what we should do to solve this issue now. It is not currently being reproduced at here, but it is happening in the field. Please discuss it by tomorrow morning and let me know. Thank you YK.Jung |
|
|
Hi YK, Do you get more information from field users? such as post in https://172.18.223.170/vaas/view.php?id=1569#c11387 It is hard to have solution based on log files only. Thank you ! |
|
|
Hi Kerwin This issue is not being reported in INTEK Smart3. it can be reproduced in the field, but if we do the same reproduction test at here, the issue can't be reproduced And there is no more information on the field. it is assumed to be random. and did you(FXN QA) do a reproduction test? anyway we need to find the cause in the log. And If you can't find it in the log, you have to add additional logs and proceed with the official distribution. Can you add the log and distribute it? , is it correct ? Then please commit it Thank you!! |
|
|
Hi YK, We will add debug messages in path of key dispatching. When do you need the test FW containing debug messages ? |
|
|
Hi Kerwin I have one more question. How about #define DEBUG_RAW_EVENTS 1 and release it in InputReader.cpp file? frameworks/native/services/inputflinger/InputReader.cpp Please give me your opinion. and please send me the test FW(ND/SD) when it is ready Thank you!! |
|
|
Hi YK, Here is the download link of test images. https://drive.google.com/drive/folders/1vDe6_PrZ6mb87ml9JPGpigZyL_VUhNzO?usp=share_link The flag DEBUG_RAW_EVENTS of InputReader.cpp is also enabled. ps. This test FW is modified over the version of BFX-AT100_5.3.4a_2022-0818-165127.xml. |
|
|
HI Kerwin / Bcan I checked the FW and have additional question. Can you put a specific code to confirm that the user's key has disappeared? For example, when the key disappears, BFXBTF-484 traceKey 1 BFXBTF-484 traceKey 2 .. displays the log. (Allocate a number from 1 according to the location of the code. ) If, after implementation and deploying the FW, I can register BFXBTF-484 with the log system, then I can gather "BFXBTF-484 traceKey xxx" information from the user. Can you do it like this? When only logs are added, it is necessary to wait for VoC from the user. Please give me your opinion. Thank you YK.Jung |
|
|
Hi YK, Test images (suffix: lostkey8) are uploaded to the same download link. https://drive.google.com/drive/folders/1vDe6_PrZ6mb87ml9JPGpigZyL_VUhNzO?usp=share_link The related tags are replaced with "BFXBTF-484". |
|
|
HI Bcan you seem to have misunderstood something. My requirement is that the BFXBTF-484 log is printed only when the issue occurs. (i.e., if BFXBTF-484 is observed in the log, the issue is considered to have occurred. ) < If the BFXBTF-484 log is continuously observed as shown below, it is impossible to check whether it is an issue or not. > .. 12-16 14:09:53.916 3899 4009 I BFXBTF-484: ===> traceKey 7, keycode=166, in dispatchOnceInnerLocked of frameworks/native/services/inputflinger/InputDispatcher.cpp line 411 12-16 14:09:53.916 3899 4009 I BFXBTF-484: ===> traceKey 6.2, keycode=166, interceptKeyResult=0, in dispatchKeyLocked of frameworks/native/services/inputflinger/InputDispatcher.cpp line 804 12-16 14:09:53.916 3899 4009 I BFXBTF-484: ===> traceKey 6, keycode=166, interceptKeyResult=0, in dispatchKeyLocked of frameworks/native/services/inputflinger/InputDispatcher.cpp line 855 12-16 14:09:53.916 3899 4009 I BFXBTF-484: ===> traceKey 5, keycode=166, interceptKeyResult=0, in dispatchKeyLocked of frameworks/native/services/inputflinger/InputDispatcher.cpp line 859 12-16 14:09:53.916 3899 4009 I BFXBTF-484: ===> traceKey 4, keycode=166 in doInterceptKeyBeforeDispatchingLockedInterruptible of frameworks/native/services/inputflinger/InputDispatcher.cpp line 4178 .. If you don't understand, please contact me Thank you YK.Jung |
|
|
Hi YK, We have no idea about how this issue happens. There are not proper positions to add messages as what you said. The only way we can use is to print all messages along with the programmatic path of a key press and check the break point of the messages while the issue happens. |
|
|
Hi Bcan Please check the keycode flow on the source code and add the BFXBTF-484 log where it is rejected in the middle or where exception processing occurs for example > below is an example. actually, I didn't check the keycode flow. Note : what I'm saying below is just an example. you can check and put all the codes in case of an abnormal error. ========================= example=========================================== 145 static bool validateKeyEvent(int32_t action) { 146 if (! isValidKeyAction(action)) { 147 ALOGE("Key event has invalid action code 0x%x", action); <== add log BFXBTF-484 148 return false; 149 } 150 return true; 151 } 576 void InputDispatcher::dropInboundEventLocked(EventEntry* entry, DropReason dropReason) { 577 const char* reason; <== add log BFXBTF-484 with dropReason 578 switch (dropReason) { 579 case DROP_REASON_POLICY: 580 #if DEBUG_INBOUND_EVENT_DETAILS 581 ALOGD("Dropped event because policy consumed it."); 582 #endif 583 reason = "inbound event was dropped because the policy consumed it"; 584 break; 585 case DROP_REASON_DISABLED: 586 if (mLastDropReason != DROP_REASON_DISABLED) { 587 ALOGI("Dropped event because input dispatch is disabled."); 588 } 589 reason = "inbound event was dropped because input dispatch is disabled"; 590 break; 52 status_t KeyLayoutMap::load(const std::string& filename, sp<KeyLayoutMap>* outMap) { 53 outMap->clear(); 54 55 Tokenizer* tokenizer; 56 status_t status = Tokenizer::open(String8(filename.c_str()), &tokenizer); 57 if (status) { 58 ALOGE("Error %d opening key layout map file %s.", status, filename.c_str()); <== add log BFXBTF-484 59 } else { 60 sp<KeyLayoutMap> map = new KeyLayoutMap(); 61 if (!map.get()) { 62 ALOGE("Error allocating key layout map."); <== add log BFXBTF-484 63 status = NO_MEMORY; 64 } else { 65 #if DEBUG_PARSER_PERFORMANCE 66 nsecs_t startTime = systemTime(SYSTEM_TIME_MONOTONIC); 67 #endif 242 status_t KeyLayoutMap::Parser::parseKey() { 243 String8 codeToken = mTokenizer->nextToken(WHITESPACE); 244 bool mapUsage = false; 245 if (codeToken == "usage") { 246 mapUsage = true; 247 mTokenizer->skipDelimiters(WHITESPACE); 248 codeToken = mTokenizer->nextToken(WHITESPACE); 249 } 250 251 char* end; 252 int32_t code = int32_t(strtol(codeToken.string(), &end, 0)); 253 if (*end) { 254 ALOGE("%s: Expected key %s number, got '%s'.", mTokenizer->getLocation().string(), 255 mapUsage ? "usage" : "scan code", codeToken.string()); <== add log BFXBTF-484 256 return BAD_VALUE; 257 } 258 KeyedVector<int32_t, Key>& map = mapUsage ? mMap->mKeysByUsageCode : mMap->mKeysByScanCode; 259 if (map.indexOfKey(code) >= 0) { 260 ALOGE("%s: Duplicate entry for key %s '%s'.", mTokenizer->getLocation().string(), 261 mapUsage ? "usage" : "scan code", codeToken.string()); <== add log BFXBTF-484 262 return BAD_VALUE; 263 } .... ========================================================================================== And the key code can be checked by "in/out" each module. There is no need to display debugs if they are normally "input/output" to each module. but if there is an "input" but no "output", you can display the log by checking that it remains at the next "input". Please check it Thank you!! YK.Jung |
|
|
Hi YK, Attached files are the modifications of debug log. It includes 1. Add logs at "return" points. (use tag BFXBTF-484) At first there 8 points added. After experiments, only 2 points are kept and 6 points are removed because they will print logs through normal operations. 2. Add logs along with programmatic path of a key press (use the original tag of each file) This includes the 6 points removed from item 1. 3. Enable related debug flags I will provide test images if you think these modifications are okay. traceKey1.diff (4,705 bytes)
diff --git a/services/core/java/com/android/server/input/InputManagerService.java b/services/core/java/com/android/server/input/InputManagerService.java
index 75b9705e104..722a10ee1ce 100644
--- a/services/core/java/com/android/server/input/InputManagerService.java
+++ b/services/core/java/com/android/server/input/InputManagerService.java
@@ -1836,6 +1836,7 @@ public class InputManagerService extends IInputManager.Stub
// Native callback.
private long interceptKeyBeforeDispatching(IBinder focus, KeyEvent event, int policyFlags) {
+ Slog.w(TAG, "===> traceKey A3, keycode="+event.getKeyCode()+" in interceptKeyBeforeDispatching of InputManagerService.java");
return mWindowManagerCallbacks.interceptKeyBeforeDispatching(focus, event, policyFlags);
}
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index c01ab4227d2..a72c6a0f7ee 100644
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -3173,6 +3173,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
@Override
public long interceptKeyBeforeDispatching(WindowState win, KeyEvent event, int policyFlags) {
+ Log.d(TAG, "====> traceKey A1, keycode="+event.getKeyCode()+" in interceptKeyBeforeDispatching of PhoneWindowManager.java");
final long result = interceptKeyBeforeDispatchingInner(win, event, policyFlags);
final int eventDisplayId = event.getDisplayId();
if (result == 0 && !mPerDisplayFocusEnabled
@@ -3214,6 +3215,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
final int displayId = event.getDisplayId();
+ Log.d(TAG, "====> traceKey A0, keycode="+keyCode+" in interceptKeyBeforeDispatchingInner of PhoneWindowManager.java");
if (DEBUG_INPUT) {
Log.i(TAG, "interceptKeyTi keyCode=" + keyCode + " down=" + down + " repeatCount="
@@ -3895,6 +3897,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
int actions = interceptKeyBeforeQueueing(fallbackEvent, policyFlags);
if ((actions & ACTION_PASS_TO_USER) != 0) {
+
long delayMillis = interceptKeyBeforeDispatching(
win, fallbackEvent, policyFlags);
if (delayMillis == 0) {
@@ -4375,6 +4378,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
isKeyguardShowingAndNotOccluded() :
mKeyguardDelegate.isShowing()));
+ Log.d(TAG, "====> traceKey B0, keycode="+keyCode+" in interceptKeyBeforeQueueing of PhoneWindowManager.java");
if (DEBUG_INPUT) {
Log.d(TAG, "interceptKeyTq keycode=" + keyCode
+ " interactive=" + interactive + " keyguardActive=" + keyguardActive
diff --git a/services/core/java/com/android/server/wm/InputManagerCallback.java b/services/core/java/com/android/server/wm/InputManagerCallback.java
index 6b500967f42..ecdf90f0fbe 100644
--- a/services/core/java/com/android/server/wm/InputManagerCallback.java
+++ b/services/core/java/com/android/server/wm/InputManagerCallback.java
@@ -180,6 +180,7 @@ final class InputManagerCallback implements InputManagerService.WindowManagerCal
public long interceptKeyBeforeDispatching(
IBinder focus, KeyEvent event, int policyFlags) {
WindowState windowState = mService.windowForClientLocked(null, focus, false);
+ Slog.i(TAG_WM, "===> traceKey A2, keycode="+event.getKeyCode()+" in interceptKeyBeforeDispatching of InputManagerCallback.java");
return mService.mPolicy.interceptKeyBeforeDispatching(windowState, event, policyFlags);
}
diff --git a/services/core/jni/com_android_server_input_InputManagerService.cpp b/services/core/jni/com_android_server_input_InputManagerService.cpp
index fb3076ba9dd..ab66f40b205 100644
--- a/services/core/jni/com_android_server_input_InputManagerService.cpp
+++ b/services/core/jni/com_android_server_input_InputManagerService.cpp
@@ -1148,6 +1148,7 @@ nsecs_t NativeInputManager::interceptKeyBeforeDispatching(
jobject keyEventObj = android_view_KeyEvent_fromNative(env, keyEvent);
if (keyEventObj) {
+ ALOGI("===> traceKey A4, keyCode=%d in %s of %s line %d", keyEvent->getKeyCode(), __func__, __FILE__,__LINE__);
jlong delayMillis = env->CallLongMethod(mServiceObj,
gServiceClassInfo.interceptKeyBeforeDispatching,
tokenObj, keyEventObj, policyFlags);
traceKey2.diff (12,392 bytes)
diff --git a/libs/input/KeyCharacterMap.cpp b/libs/input/KeyCharacterMap.cpp
index e189d20e2..1694ab601 100644
--- a/libs/input/KeyCharacterMap.cpp
+++ b/libs/input/KeyCharacterMap.cpp
@@ -34,14 +34,13 @@
#include <utils/Timers.h>
// Enables debug output for the parser.
-#define DEBUG_PARSER 0
+#define DEBUG_PARSER 1
// Enables debug output for parser performance.
-#define DEBUG_PARSER_PERFORMANCE 0
+#define DEBUG_PARSER_PERFORMANCE 1
// Enables debug output for mapping.
-#define DEBUG_MAPPING 0
-
+#define DEBUG_MAPPING 1
namespace android {
diff --git a/libs/input/KeyLayoutMap.cpp b/libs/input/KeyLayoutMap.cpp
index efca68d17..a84d57c56 100644
--- a/libs/input/KeyLayoutMap.cpp
+++ b/libs/input/KeyLayoutMap.cpp
@@ -28,13 +28,13 @@
#include <utils/Timers.h>
// Enables debug output for the parser.
-#define DEBUG_PARSER 0
+#define DEBUG_PARSER 1
// Enables debug output for parser performance.
-#define DEBUG_PARSER_PERFORMANCE 0
+#define DEBUG_PARSER_PERFORMANCE 1
// Enables debug output for mapping.
-#define DEBUG_MAPPING 0
+#define DEBUG_MAPPING 1
namespace android {
diff --git a/services/inputflinger/InputDispatcher.cpp b/services/inputflinger/InputDispatcher.cpp
index aea026823..73ee35d17 100644
--- a/services/inputflinger/InputDispatcher.cpp
+++ b/services/inputflinger/InputDispatcher.cpp
@@ -20,28 +20,28 @@
#define LOG_NDEBUG 0
// Log detailed debug messages about each inbound event notification to the dispatcher.
-#define DEBUG_INBOUND_EVENT_DETAILS 0
+#define DEBUG_INBOUND_EVENT_DETAILS 1
// Log detailed debug messages about each outbound event processed by the dispatcher.
-#define DEBUG_OUTBOUND_EVENT_DETAILS 0
+#define DEBUG_OUTBOUND_EVENT_DETAILS 1
// Log debug messages about the dispatch cycle.
-#define DEBUG_DISPATCH_CYCLE 0
+#define DEBUG_DISPATCH_CYCLE 1
// Log debug messages about registrations.
-#define DEBUG_REGISTRATION 0
+#define DEBUG_REGISTRATION 1
// Log debug messages about input event injection.
-#define DEBUG_INJECTION 0
+#define DEBUG_INJECTION 1
// Log debug messages about input focus tracking.
-#define DEBUG_FOCUS 0
+#define DEBUG_FOCUS 1
// Log debug messages about the app switch latency optimization.
-#define DEBUG_APP_SWITCH 0
+#define DEBUG_APP_SWITCH 1
// Log debug messages about hover events.
-#define DEBUG_HOVER 0
+#define DEBUG_HOVER 1
#include "InputDispatcher.h"
@@ -65,6 +65,8 @@
#define INDENT3 " "
#define INDENT4 " "
+#define BLOGI(...) ALOG(LOG_INFO, "BFXBTF-484", __VA_ARGS__)
+
using android::base::StringPrintf;
namespace android {
@@ -290,6 +292,7 @@ void InputDispatcher::dispatchOnce() {
void InputDispatcher::dispatchOnceInnerLocked(nsecs_t* nextWakeupTime) {
nsecs_t currentTime = now();
+ ALOGI("===> traceKey A10, mDispatchEnabled=%d, mDispatchFrozen=%d in %s of %s line %d" ,mDispatchEnabled ,mDispatchFrozen ,__func__ ,__FILE__ ,__LINE__);
// Reset the key repeat timer whenever normal dispatch is suspended while the
// device is in a non-interactive state. This is to ensure that we abort a key
// repeat if the device is just coming out of sleep.
@@ -302,6 +305,7 @@ void InputDispatcher::dispatchOnceInnerLocked(nsecs_t* nextWakeupTime) {
#if DEBUG_FOCUS
ALOGD("Dispatch frozen. Waiting some more.");
#endif
+ ALOGI("===> traceKey A9.2 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
return;
}
@@ -337,6 +341,7 @@ void InputDispatcher::dispatchOnceInnerLocked(nsecs_t* nextWakeupTime) {
// Nothing to do if there is no pending event.
if (!mPendingEvent) {
+ ALOGI("===> traceKey A9.1 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
return;
}
} else {
@@ -354,6 +359,7 @@ void InputDispatcher::dispatchOnceInnerLocked(nsecs_t* nextWakeupTime) {
resetANRTimeoutsLocked();
}
+ ALOGI("===> traceKey A9 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
// Now we have an event to dispatch.
// All events are eventually dequeued and processed this way, even if we intend to drop them.
ALOG_ASSERT(mPendingEvent != nullptr);
@@ -403,6 +409,7 @@ void InputDispatcher::dispatchOnceInnerLocked(nsecs_t* nextWakeupTime) {
if (dropReason == DROP_REASON_NOT_DROPPED && mNextUnblockedEvent) {
dropReason = DROP_REASON_BLOCKED;
}
+ ALOGI("===> traceKey A8, keycode=%d, in %s of %s line %d" ,typedEntry->keyCode ,__func__ ,__FILE__ ,__LINE__);
done = dispatchKeyLocked(currentTime, typedEntry, &dropReason, nextWakeupTime);
break;
}
@@ -795,6 +802,7 @@ bool InputDispatcher::dispatchDeviceResetLocked(
bool InputDispatcher::dispatchKeyLocked(nsecs_t currentTime, KeyEntry* entry,
DropReason* dropReason, nsecs_t* nextWakeupTime) {
+ ALOGI("===> traceKey A7.2, keycode=%d, interceptKeyResult=%d, in %s of %s line %d" ,entry->keyCode ,entry->interceptKeyResult ,__func__ ,__FILE__ ,__LINE__);
// Preprocessing.
if (! entry->dispatchInProgress) {
if (entry->repeatCount == 0
@@ -838,15 +846,18 @@ bool InputDispatcher::dispatchKeyLocked(nsecs_t currentTime, KeyEntry* entry,
if (entry->interceptKeyWakeupTime < *nextWakeupTime) {
*nextWakeupTime = entry->interceptKeyWakeupTime;
}
+ ALOGI("===> traceKey A7.1, keycode=%d, interceptKeyResult=%d, in %s of %s line %d" ,entry->keyCode ,entry->interceptKeyResult ,__func__ ,__FILE__ ,__LINE__);
return false; // wait until next wakeup
}
entry->interceptKeyResult = KeyEntry::INTERCEPT_KEY_RESULT_UNKNOWN;
entry->interceptKeyWakeupTime = 0;
}
+ ALOGI("===> traceKey A7, keycode=%d, interceptKeyResult=%d, in %s of %s line %d" ,entry->keyCode ,entry->interceptKeyResult ,__func__ ,__FILE__ ,__LINE__);
// Give the policy a chance to intercept the key.
if (entry->interceptKeyResult == KeyEntry::INTERCEPT_KEY_RESULT_UNKNOWN) {
if (entry->policyFlags & POLICY_FLAG_PASS_TO_USER) {
+ ALOGI("===> traceKey A6, keycode=%d, interceptKeyResult=%d, in %s of %s line %d" ,entry->keyCode ,entry->interceptKeyResult ,__func__ ,__FILE__ ,__LINE__);
CommandEntry* commandEntry = postCommandLocked(
& InputDispatcher::doInterceptKeyBeforeDispatchingLockedInterruptible);
sp<InputWindowHandle> focusedWindowHandle =
@@ -866,12 +877,14 @@ bool InputDispatcher::dispatchKeyLocked(nsecs_t currentTime, KeyEntry* entry,
*dropReason = DROP_REASON_POLICY;
}
}
+ //ALOGI("===> traceKey A5.5, keycode=%d, interceptKeyResult=%d in %s of %s line %d", entry->keyCode, entry->interceptKeyResult, __func__, __FILE__, __LINE__);
// Clean up if dropping the event.
if (*dropReason != DROP_REASON_NOT_DROPPED) {
setInjectionResult(entry, *dropReason == DROP_REASON_POLICY
? INPUT_EVENT_INJECTION_SUCCEEDED : INPUT_EVENT_INJECTION_FAILED);
mReporter->reportDroppedKey(entry->sequenceNum);
+ ALOGI("===> traceKey A5.4, keycode=%d, interceptKeyResult=%d in %s of %s line %d", entry->keyCode, entry->interceptKeyResult, __func__, __FILE__, __LINE__);
return true;
}
@@ -880,17 +893,20 @@ bool InputDispatcher::dispatchKeyLocked(nsecs_t currentTime, KeyEntry* entry,
int32_t injectionResult = findFocusedWindowTargetsLocked(currentTime,
entry, inputTargets, nextWakeupTime);
if (injectionResult == INPUT_EVENT_INJECTION_PENDING) {
+ ALOGI("===> traceKey A5.3, keycode=%d, interceptKeyResult=%d in %s of %s line %d", entry->keyCode, entry->interceptKeyResult, __func__, __FILE__, __LINE__);
return false;
}
setInjectionResult(entry, injectionResult);
if (injectionResult != INPUT_EVENT_INJECTION_SUCCEEDED) {
+ ALOGI("===> traceKey A5.2, keycode=%d, interceptKeyResult=%d in %s of %s line %d", entry->keyCode, entry->interceptKeyResult, __func__, __FILE__, __LINE__);
return true;
}
// Add monitor channels from event's or focused display.
addGlobalMonitoringTargetsLocked(inputTargets, getTargetDisplayId(entry));
+ //ALOGI("===> traceKey A5.1, keycode=%d, interceptKeyResult=%d in %s of %s line %d", entry->keyCode, entry->interceptKeyResult, __func__, __FILE__, __LINE__);
// Dispatch the key.
dispatchEventLocked(currentTime, entry, inputTargets);
return true;
@@ -4165,6 +4181,7 @@ void InputDispatcher::doInterceptKeyBeforeDispatchingLockedInterruptible(
android::base::Timer t;
sp<IBinder> token = commandEntry->inputChannel != nullptr ?
commandEntry->inputChannel->getToken() : nullptr;
+ ALOGI("===> traceKey A5, keycode=%d in %s of %s line %d", event.getKeyCode(), __func__, __FILE__, __LINE__);
nsecs_t delay = mPolicy->interceptKeyBeforeDispatching(token,
&event, entry->policyFlags);
if (t.duration() > SLOW_INTERCEPTION_THRESHOLD) {
diff --git a/services/inputflinger/InputReader.cpp b/services/inputflinger/InputReader.cpp
index b3734e5c6..336560363 100644
--- a/services/inputflinger/InputReader.cpp
+++ b/services/inputflinger/InputReader.cpp
@@ -19,13 +19,13 @@
//#define LOG_NDEBUG 0
// Log debug messages for each raw event received from the EventHub.
-#define DEBUG_RAW_EVENTS 0
+#define DEBUG_RAW_EVENTS 1
// Log debug messages about touch screen filtering hacks.
#define DEBUG_HACKS 0
// Log debug messages about virtual key processing.
-#define DEBUG_VIRTUAL_KEYS 0
+#define DEBUG_VIRTUAL_KEYS 1
// Log debug messages about pointers.
#define DEBUG_POINTERS 0
@@ -65,6 +65,8 @@
#define INDENT4 " "
#define INDENT5 " "
+#define BLOGI(...) ALOG(LOG_INFO, "BFXBTF-484", __VA_ARGS__)
+
using android::base::StringPrintf;
namespace android {
@@ -312,6 +314,7 @@ void InputReader::loopOnce() {
mReaderIsAliveCondition.broadcast();
if (count) {
+ ALOGI("===> traceKey C3 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
processEventsLocked(mEventBuffer, count);
}
@@ -344,6 +347,7 @@ void InputReader::loopOnce() {
// resulting in a deadlock. This situation is actually quite plausible because the
// listener is actually the input dispatcher, which calls into the window manager,
// which occasionally calls into the input reader.
+ ALOGI("===> traceKey C0 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
mQueuedListener->flush();
}
@@ -363,6 +367,7 @@ void InputReader::processEventsLocked(const RawEvent* rawEvents, size_t count) {
#if DEBUG_RAW_EVENTS
ALOGD("BatchSize: %zu Count: %zu", batchSize, count);
#endif
+ ALOGI("===> traceKey C2 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
processEventsForDeviceLocked(deviceId, rawEvent, batchSize);
} else {
switch (rawEvent->type) {
@@ -524,15 +529,18 @@ void InputReader::processEventsForDeviceLocked(int32_t deviceId,
ssize_t deviceIndex = mDevices.indexOfKey(deviceId);
if (deviceIndex < 0) {
ALOGW("Discarding event for unknown deviceId %d.", deviceId);
+ BLOGI("===> traceKey C1.2 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
return;
}
InputDevice* device = mDevices.valueAt(deviceIndex);
if (device->isIgnored()) {
//ALOGD("Discarding event for ignored deviceId %d.", deviceId);
+ BLOGI("===> traceKey C1.1 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
return;
}
+ ALOGI("===> traceKey C1 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
device->process(rawEvents, count);
}
@@ -1159,6 +1167,7 @@ void InputDevice::process(const RawEvent* rawEvents, size_t count) {
reset(rawEvent->when);
} else {
for (InputMapper* mapper : mMappers) {
+ ALOGI("===> traceKey C0.2 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
mapper->process(rawEvent);
}
}
@@ -2302,6 +2311,7 @@ void KeyboardInputMapper::process(const RawEvent* rawEvent) {
mCurrentHidUsage = 0;
if (isKeyboardOrGamepadKey(scanCode)) {
+ ALOGI("===> traceKey C0.1 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
processKey(rawEvent->when, rawEvent->value != 0, scanCode, usageCode);
}
break;
|
|
|
Hi Bcan I think it's okay. please make v15.534.401 FW version by applying only below two patches based on v15.534.28. (ND/SD/SU) 1) traceKey1.diff (4,705 bytes) 2) traceKey2.diff (12,392 bytes) If you send me the built FW(v15.534.401), our QA will proceed with the additional test Thank you YK.Jung |
|
|
Hi Bcan Please build and send the FW before lunch today then , we can test it during the weekend Thank you YK.Jung |
|
|
Hi YK, Test images (15.534.401) are uploaded. Please check it via the link below. https://drive.google.com/drive/folders/1vDe6_PrZ6mb87ml9JPGpigZyL_VUhNzO?usp=share_link |
|
|
Hi Bcan We did a test with the SD image over the weekend, but issue has not been observed yet. and your log doesn't seem to have any issues. but I am not sure The point now is to decide whether to apply this patch to the "branch BFX-AT100_5.3.4a" that is now being prepared for field distribution. Please send me your opinion. (please discuss with Kerwin. ) But just in case, I'm testing the test SU image you gave me by burning it. The following error logs are still being observed. what's the problem? ============================================================================== 01-04 16:09:47.644 4563 7461 I ChimeraSrvcProxy: NullBinder for com.google.android.gms.auth.cryptauth.cryptauthservice.START triggering remote TransactionTooLargeException due to Service without Chimera impl 01-04 16:09:47.644 4288 4472 E JavaBinder: !!! FAILED BINDER TRANSACTION !!! (parcel size = 460) 01-04 16:09:47.645 4288 4472 W GmsClient: IGmsServiceBroker.getService failed 01-04 16:09:47.645 4288 4472 W GmsClient: android.os.DeadObjectException: Transaction failed on small parcel; remote process probably died 01-04 16:09:47.645 4288 4472 W GmsClient: at android.os.BinderProxy.transactNative(Native Method) 01-04 16:09:47.645 4288 4472 W GmsClient: at android.os.BinderProxy.transact(BinderProxy.java:510) 01-04 16:09:47.645 4288 4472 W GmsClient: at myi.c(:com.google.android.gms@221514099@22.15.14 (080306-441847897):5) 01-04 16:09:47.645 4288 4472 W GmsClient: at mwj.s(:com.google.android.gms@221514099@22.15.14 (080306-441847897):13) 01-04 16:09:47.645 4288 4472 W GmsClient: at mgd.run(:com.google.android.gms@221514099@22.15.14 (080306-441847897):5) 01-04 16:09:47.645 4288 4472 W GmsClient: at android.os.Handler.handleCallback(Handler.java:883) 01-04 16:09:47.645 4288 4472 W GmsClient: at android.os.Handler.dispatchMessage(Handler.java:100) 01-04 16:09:47.645 4288 4472 W GmsClient: at xwi.hF(:com.google.android.gms@221514099@22.15.14 (080306-441847897):0) 01-04 16:09:47.645 4288 4472 W GmsClient: at xwi.dispatchMessage(:com.google.android.gms@221514099@22.15.14 (080306-441847897):11) 01-04 16:09:47.645 4288 4472 W GmsClient: at android.os.Looper.loop(Looper.java:214) 01-04 16:09:47.645 4288 4472 W GmsClient: at android.os.HandlerThread.run(HandlerThread.java:67) 01-04 16:09:47.776 3502 3502 W ATVRemoteAudioH: type=1400 audit(0.0:735): avc: denied { call } for scontext=u:r:hal_audio_amlogic:s0 tcontext=u:r:rc_server:s0 tclass=binder permissive=0 01-04 16:09:47.777 3502 3765 W ServiceManagement: getService: unable to call into hwbinder service for vendor.amlogic.hardware.remotecontrol@1.0::IRemoteControl/default. 01-04 16:09:47.941 4456 4600 D iSQMSAgent_LogSystem: CISQMSMain::is_time_to_send_data 01-04 16:09:47.941 4456 4600 D iSQMSAgent_LogSystem: CISQMSHolePunching::send_keep_alive_to_report_server 01-04 16:09:47.941 4456 4600 D iSQMSAgent_LogSystem: CISQMSHolePunching::send_keep_alive_to_report_server 0x00001 =================================================================== Thank you YK.Jung |
|
|
Hi YK, 1. After discussing with Kerwin, we think it's OK to deploy FW(v15.534.401) for getting more information of the losing OK button. 2. This error could also be checked in userdebug build. It comes from Katniss for not connecting location service. (WIFI is needed) The error messages will only appear repeatedly for several minutes. It is a normal situation. Please don't worry. |
|
|
HI Bcan I see , please apply it to "branch BFX-AT100_5.3.4a" and please let me know when it's done. Thank you YK.Jung |
|
|
Hi YK, The patches are applied. Please check it. |
|
|
HI Bcan Please apply this patch to Smart3 UI536 (ATV10) Thank you YK.Jung |
|
|
Hi YK, The above patches are committed to branch BFX-AT100_5.3.6. |
|
|
Hi Bcan, While checking recent RCU-related VOC issues, I found a log that remained among the issues where the OK button did not work. When I checked the log, there were traces of entering the OK button in the dmesg log, but there was no trace of entering the button in the main log. [05-18 23:49:42.727] key down 232 After checking the logs some more, it seems that the key is not being passed to the UI at the point below. 05-18 23:49:40.352 3863 3962 I InputDispatcher: ===> traceKey A9.1 in dispatchOnceInnerLocked of frameworks/native/services/inputflinger/InputDispatcher.cpp line 344 Please check the log and see if there are any points that could be the cause. Please refer attached log. Thank you. Kim |
|
|
Hi Bcan Please update the progress Thank you YK.Jung |
|
|
Hi YK, I am still checking. If you have more logs, please also provide them to me. |
|
|
Hi Bcan There are no more logs. If the logs of this issue have an addition, we will provide them to you. and please update the analysis results so far Thank you YK.Jung |
|
|
Hi YK, After checking, we found that the problem might happen in the path from driver to EventHub. For advanced tracing, we need to enable the debug message of EventHub and maybe add some log into the driver. Could you tell me current number of smart3(android 10) and smart3(android 12) in the field? Does this issue also happen in smart3(android 12) ? |
|
|
Hi Bacn OS12 has not been deployed much yet. Therefore, it is not yet confirmed whether this issue is observed in OS12. The final version of the OS10 field is v15.541.66 The final version of the OS12 field is v15.542.60 If you are preparing a patch, please make a test patch with OS10(UI541) and share it with us first. Please don't apply it to UI541 yet. Thank you YK.Jung |
|
|
Hi YK, Here is the download link of test images. https://drive.google.com/drive/folders/1o4vPvjtwDlMFeuQhd7okT5jwZVkVkOYg?usp=sharing Please refer to traceKey3.diff for modifications. traceKey3.diff (4,672 bytes)
diff --git a/services/inputflinger/EventHub.cpp b/services/inputflinger/EventHub.cpp
index ce5627271..a0ecc115a 100644
--- a/services/inputflinger/EventHub.cpp
+++ b/services/inputflinger/EventHub.cpp
@@ -33,7 +33,7 @@
#define LOG_TAG "EventHub"
-// #define LOG_NDEBUG 0
+#define LOG_NDEBUG 0
#include "EventHub.h"
@@ -885,6 +885,7 @@ size_t EventHub::getEvents(int timeoutMillis, RawEvent* buffer, size_t bufferSiz
}
}
+ ALOGI("===> traceKey D7, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
// Grab the next input event.
bool deviceChanged = false;
while (mPendingEventIndex < mPendingEventCount) {
@@ -941,27 +942,34 @@ size_t EventHub::getEvents(int timeoutMillis, RawEvent* buffer, size_t bufferSiz
}
continue;
}
+
+ ALOGI("===> traceKey D6, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
// This must be an input event
if (eventItem.events & EPOLLIN) {
int32_t readSize = read(device->fd, readBuffer,
sizeof(struct input_event) * capacity);
+ ALOGI("===> traceKey D6-1, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
if (readSize == 0 || (readSize < 0 && errno == ENODEV)) {
// Device was removed before INotify noticed.
ALOGW("could not get event, removed? (fd: %d size: %" PRId32
" bufferSize: %zu capacity: %zu errno: %d)\n",
device->fd, readSize, bufferSize, capacity, errno);
+ ALOGI("===> traceKey D6-1a, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
deviceChanged = true;
closeDeviceLocked(device);
} else if (readSize < 0) {
+ ALOGI("===> traceKey D6-1b, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
if (errno != EAGAIN && errno != EINTR) {
ALOGW("could not get event (errno=%d)", errno);
}
} else if ((readSize % sizeof(struct input_event)) != 0) {
+ ALOGI("===> traceKey D6-1c, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
ALOGE("could not get event (wrong size: %d)", readSize);
} else {
int32_t deviceId = device->id == mBuiltInKeyboardId ? 0 : device->id;
size_t count = size_t(readSize) / sizeof(struct input_event);
+ ALOGI("===> traceKey D6-1d, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
for (size_t i = 0; i < count; i++) {
struct input_event& iev = readBuffer[i];
event->when = processEventTimestamp(iev);
@@ -973,6 +981,7 @@ size_t EventHub::getEvents(int timeoutMillis, RawEvent* buffer, size_t bufferSiz
capacity -= 1;
}
if (capacity == 0) {
+ ALOGI("===> traceKey D6-1d buffer full, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
// The result buffer is full. Reset the pending event index
// so we will try to read the device again on the next iteration.
mPendingEventIndex -= 1;
@@ -980,16 +989,19 @@ size_t EventHub::getEvents(int timeoutMillis, RawEvent* buffer, size_t bufferSiz
}
}
} else if (eventItem.events & EPOLLHUP) {
+ ALOGI("===> traceKey D6-2, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
ALOGI("Removing device %s due to epoll hang-up event.",
device->identifier.name.c_str());
deviceChanged = true;
closeDeviceLocked(device);
} else {
+ ALOGI("===> traceKey D6-3, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
ALOGW("Received unexpected epoll event 0x%08x for device %s.",
eventItem.events, device->identifier.name.c_str());
}
}
+ ALOGI("===> traceKey D5, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
// readNotify() will modify the list of devices so this must be done after
// processing all other events to ensure that we read all remaining events
// before closing the devices.
|
|
|
Hi Bcan, I have attached another log for OK button is not working. Please check these log files also. Thank you. Kim |
|
|
Hi Kim, Thanks for the information. After checking these logs, we have the same conclusion as note #c15966. |
|
|
Hi Bcan OS10 has not yet been scheduled for further deployment. Therefore, further review should be applied to OS12. At present, more than 50% of OS12 FW has been distributed to users and will continue to increase. and this issue is also being observed in OS12. Therefore, patches for additional debugging should be applied to OS12. So please prepare the debug patch to be applied to OS12. - The debug log should not be output too much. (there should be no load on the system.) - It is easy to collect logs from the field if a particular string can be output in the event of an issue. Please use the branch below for code base. (BFX-AT100_5.4.2_Sprint2) repo init -u ssh://git@bitbucket.skbroadband.com:7999/fstb-12/manifests.git -b BFX-AT100_5.4.2_Sprint2 Please share the patch when it is ready. Thank you YK.Jung |
|
|
Hi Bcan Please update me on the progress. When can I get the patch ? Thank you YK.Jung |
|
|
Hi YK, Basically, it will use the same patches. (traceKey1.diff, traceKey2.diff, traceKey3.diff) Because there are some differences betteen Android 10/12, extra modification is needed. The new patch will be provided on 7/30. |
|
|
Hi YK, Attached files are the patches for Android 12. As for your requirement "It is easy to collect logs from the field if a particular string can be output in the event of an issue", please check the note 11501. Regards, Bcan 0001-Add-debug-messages-for-losing-OK-key-1-2.patch (4,811 bytes)
From 432737ad97a9a0bfbe03b593ad26aeea3e6c4b8e Mon Sep 17 00:00:00 2001
From: Bcan <bcan.cc.yeh@fii-foxconn.com>
Date: Mon, 29 Jul 2024 17:14:45 +0800
Subject: [PATCH] Add debug messages for losing OK key (1/2)
---
.../java/com/android/server/input/InputManagerService.java | 1 +
.../java/com/android/server/policy/PhoneWindowManager.java | 4 ++++
.../core/java/com/android/server/wm/InputManagerCallback.java | 1 +
.../core/jni/com_android_server_input_InputManagerService.cpp | 1 +
4 files changed, 7 insertions(+)
diff --git a/services/core/java/com/android/server/input/InputManagerService.java b/services/core/java/com/android/server/input/InputManagerService.java
index 6fb9e58a49d1..0f4f3430c8fa 100644
--- a/services/core/java/com/android/server/input/InputManagerService.java
+++ b/services/core/java/com/android/server/input/InputManagerService.java
@@ -2820,6 +2820,7 @@ public class InputManagerService extends IInputManager.Stub
// Native callback.
private long interceptKeyBeforeDispatching(IBinder focus, KeyEvent event, int policyFlags) {
+ Slog.w(TAG, "===> traceKey A3, keycode="+event.getKeyCode()+" in interceptKeyBeforeDispatching of InputManagerService.java");
return mWindowManagerCallbacks.interceptKeyBeforeDispatching(focus, event, policyFlags);
}
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index 5015954083c1..69542c44cd92 100755
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -2817,6 +2817,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
@Override
public long interceptKeyBeforeDispatching(IBinder focusedToken, KeyEvent eventIn,
int policyFlags) {
+ Log.d(TAG, "====> traceKey A1, keycode="+eventIn.getKeyCode()+" in interceptKeyBeforeDispatching of PhoneWindowManager.java");
// add SPTEK
KeyEvent event = new KeyEvent(eventIn);
// add SPTEK.MW : 2022.09.30 : E +
@@ -2830,6 +2831,8 @@ public class PhoneWindowManager implements WindowManagerPolicy {
final int displayId = event.getDisplayId();
final long key_consumed = -1;
+ Log.d(TAG, "====> traceKey A0, keycode="+keyCode+" in interceptKeyBeforeDispatching of PhoneWindowManager.java");
+
if (DEBUG_INPUT) {
Log.i(TAG, "interceptKeyTi keyCode=" + keyCode + " down=" + down + " repeatCount="
+ repeatCount + " keyguardOn=" + keyguardOn
@@ -3817,6 +3820,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
final int displayId = event.getDisplayId();
final boolean isInjected = (policyFlags & WindowManagerPolicy.FLAG_INJECTED) != 0;
+ Log.d(TAG, "====> traceKey B0, keycode="+keyCode+" in interceptKeyBeforeQueueing of PhoneWindowManager.java");
if (DEBUG_INPUT) {
// If screen is off then we treat the case where the keyguard is open but hidden
// the same as if it were open and in front.
diff --git a/services/core/java/com/android/server/wm/InputManagerCallback.java b/services/core/java/com/android/server/wm/InputManagerCallback.java
index aa7e6c9c80fc..7dcd71214644 100644
--- a/services/core/java/com/android/server/wm/InputManagerCallback.java
+++ b/services/core/java/com/android/server/wm/InputManagerCallback.java
@@ -164,6 +164,7 @@ final class InputManagerCallback implements InputManagerService.WindowManagerCal
@Override
public long interceptKeyBeforeDispatching(
IBinder focusedToken, KeyEvent event, int policyFlags) {
+ Slog.i(TAG_WM, "===> traceKey A2, keycode="+event.getKeyCode()+" in interceptKeyBeforeDispatching of InputManagerCallback.java");
return mService.mPolicy.interceptKeyBeforeDispatching(focusedToken, event, policyFlags);
}
diff --git a/services/core/jni/com_android_server_input_InputManagerService.cpp b/services/core/jni/com_android_server_input_InputManagerService.cpp
index a94ad4ad7ef2..4de6cb72a5f0 100644
--- a/services/core/jni/com_android_server_input_InputManagerService.cpp
+++ b/services/core/jni/com_android_server_input_InputManagerService.cpp
@@ -1297,6 +1297,7 @@ nsecs_t NativeInputManager::interceptKeyBeforeDispatching(
jobject keyEventObj = android_view_KeyEvent_fromNative(env, keyEvent);
if (keyEventObj) {
+ ALOGI("===> traceKey A4, keyCode=%d in %s of %s line %d", keyEvent->getKeyCode(), __func__, __FILE__,__LINE__);
jlong delayMillis = env->CallLongMethod(mServiceObj,
gServiceClassInfo.interceptKeyBeforeDispatching,
tokenObj, keyEventObj, policyFlags);
--
2.25.1
0001-Add-debug-messages-for-losing-OK-key-2-2.patch (16,197 bytes)
From 3a6cc55a2ea651c99e5449416e996f46014e1ade Mon Sep 17 00:00:00 2001
From: Bcan <bcan.cc.yeh@fii-foxconn.com>
Date: Mon, 29 Jul 2024 17:15:17 +0800
Subject: [PATCH] Add debug messages for losing OK key (2/2)
---
.../dispatcher/InputDispatcher.cpp | 31 +++++++++++++------
services/inputflinger/reader/EventHub.cpp | 12 +++++++
services/inputflinger/reader/InputDevice.cpp | 1 +
services/inputflinger/reader/InputReader.cpp | 8 +++++
.../reader/mapper/KeyboardInputMapper.cpp | 1 +
5 files changed, 44 insertions(+), 9 deletions(-)
diff --git a/services/inputflinger/dispatcher/InputDispatcher.cpp b/services/inputflinger/dispatcher/InputDispatcher.cpp
index 09561fb2be..71d3554d40 100644
--- a/services/inputflinger/dispatcher/InputDispatcher.cpp
+++ b/services/inputflinger/dispatcher/InputDispatcher.cpp
@@ -19,35 +19,35 @@
#define ATRACE_TAG ATRACE_TAG_INPUT
-#define LOG_NDEBUG 1
+#define LOG_NDEBUG 0
// Log detailed debug messages about each inbound event notification to the dispatcher.
-#define DEBUG_INBOUND_EVENT_DETAILS 0
+#define DEBUG_INBOUND_EVENT_DETAILS 1
// Log detailed debug messages about each outbound event processed by the dispatcher.
-#define DEBUG_OUTBOUND_EVENT_DETAILS 0
+#define DEBUG_OUTBOUND_EVENT_DETAILS 1
// Log debug messages about the dispatch cycle.
-#define DEBUG_DISPATCH_CYCLE 0
+#define DEBUG_DISPATCH_CYCLE 1
// Log debug messages about channel creation
-#define DEBUG_CHANNEL_CREATION 0
+#define DEBUG_CHANNEL_CREATION 1
// Log debug messages about input event injection.
-#define DEBUG_INJECTION 0
+#define DEBUG_INJECTION 1
// Log debug messages about input focus tracking.
-static constexpr bool DEBUG_FOCUS = false;
+static constexpr bool DEBUG_FOCUS = true;
// Log debug messages about touch occlusion
// STOPSHIP(b/169067926): Set to false
static constexpr bool DEBUG_TOUCH_OCCLUSION = true;
// Log debug messages about the app switch latency optimization.
-#define DEBUG_APP_SWITCH 0
+#define DEBUG_APP_SWITCH 1
// Log debug messages about hover events.
-#define DEBUG_HOVER 0
+#define DEBUG_HOVER 1
#include <android-base/chrono_utils.h>
#include <android-base/properties.h>
@@ -685,6 +685,7 @@ std::chrono::nanoseconds InputDispatcher::getDispatchingTimeoutLocked(const sp<I
void InputDispatcher::dispatchOnceInnerLocked(nsecs_t* nextWakeupTime) {
nsecs_t currentTime = now();
+ ALOGI("===> traceKey A10, mDispatchEnabled=%d, mDispatchFrozen=%d in %s of %s line %d" ,mDispatchEnabled ,mDispatchFrozen ,__func__ ,__FILE__ ,__LINE__);
// Reset the key repeat timer whenever normal dispatch is suspended while the
// device is in a non-interactive state. This is to ensure that we abort a key
// repeat if the device is just coming out of sleep.
@@ -697,6 +698,7 @@ void InputDispatcher::dispatchOnceInnerLocked(nsecs_t* nextWakeupTime) {
if (DEBUG_FOCUS) {
ALOGD("Dispatch frozen. Waiting some more.");
}
+ ALOGI("===> traceKey A9.2 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
return;
}
@@ -732,6 +734,7 @@ void InputDispatcher::dispatchOnceInnerLocked(nsecs_t* nextWakeupTime) {
// Nothing to do if there is no pending event.
if (!mPendingEvent) {
+ ALOGI("===> traceKey A9.1 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
return;
}
} else {
@@ -747,6 +750,7 @@ void InputDispatcher::dispatchOnceInnerLocked(nsecs_t* nextWakeupTime) {
}
}
+ ALOGI("===> traceKey A9 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
// Now we have an event to dispatch.
// All events are eventually dequeued and processed this way, even if we intend to drop them.
ALOG_ASSERT(mPendingEvent != nullptr);
@@ -820,6 +824,7 @@ void InputDispatcher::dispatchOnceInnerLocked(nsecs_t* nextWakeupTime) {
if (dropReason == DropReason::NOT_DROPPED && mNextUnblockedEvent) {
dropReason = DropReason::BLOCKED;
}
+ ALOGI("===> traceKey A8, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
done = dispatchKeyLocked(currentTime, keyEntry, &dropReason, nextWakeupTime);
break;
}
@@ -1363,6 +1368,7 @@ void InputDispatcher::dispatchPointerCaptureChangedLocked(
bool InputDispatcher::dispatchKeyLocked(nsecs_t currentTime, std::shared_ptr<KeyEntry> entry,
DropReason* dropReason, nsecs_t* nextWakeupTime) {
+ ALOGI("===> traceKey A7.2, keycode=%d, interceptKeyResult=%d, in %s of %s line %d" ,entry->keyCode ,entry->interceptKeyResult ,__func__ ,__FILE__ ,__LINE__);
// Preprocessing.
if (!entry->dispatchInProgress) {
if (entry->repeatCount == 0 && entry->action == AKEY_EVENT_ACTION_DOWN &&
@@ -1416,15 +1422,18 @@ bool InputDispatcher::dispatchKeyLocked(nsecs_t currentTime, std::shared_ptr<Key
if (entry->interceptKeyWakeupTime < *nextWakeupTime) {
*nextWakeupTime = entry->interceptKeyWakeupTime;
}
+ ALOGI("===> traceKey A7.1, keycode=%d, interceptKeyResult=%d, in %s of %s line %d" ,entry->keyCode ,entry->interceptKeyResult ,__func__ ,__FILE__ ,__LINE__);
return false; // wait until next wakeup
}
entry->interceptKeyResult = KeyEntry::INTERCEPT_KEY_RESULT_UNKNOWN;
entry->interceptKeyWakeupTime = 0;
}
+ ALOGI("===> traceKey A7, keycode=%d, interceptKeyResult=%d, in %s of %s line %d" ,entry->keyCode ,entry->interceptKeyResult ,__func__ ,__FILE__ ,__LINE__);
// Give the policy a chance to intercept the key.
if (entry->interceptKeyResult == KeyEntry::INTERCEPT_KEY_RESULT_UNKNOWN) {
if (entry->policyFlags & POLICY_FLAG_PASS_TO_USER) {
+ ALOGI("===> traceKey A6, keycode=%d, interceptKeyResult=%d, in %s of %s line %d" ,entry->keyCode ,entry->interceptKeyResult ,__func__ ,__FILE__ ,__LINE__);
std::unique_ptr<CommandEntry> commandEntry = std::make_unique<CommandEntry>(
&InputDispatcher::doInterceptKeyBeforeDispatchingLockedInterruptible);
sp<IBinder> focusedWindowToken =
@@ -1448,6 +1457,7 @@ bool InputDispatcher::dispatchKeyLocked(nsecs_t currentTime, std::shared_ptr<Key
*dropReason == DropReason::POLICY ? InputEventInjectionResult::SUCCEEDED
: InputEventInjectionResult::FAILED);
mReporter->reportDroppedKey(entry->id);
+ ALOGI("===> traceKey A5.4, keycode=%d, interceptKeyResult=%d in %s of %s line %d", entry->keyCode, entry->interceptKeyResult, __func__, __FILE__, __LINE__);
return true;
}
@@ -1456,11 +1466,13 @@ bool InputDispatcher::dispatchKeyLocked(nsecs_t currentTime, std::shared_ptr<Key
InputEventInjectionResult injectionResult =
findFocusedWindowTargetsLocked(currentTime, *entry, inputTargets, nextWakeupTime);
if (injectionResult == InputEventInjectionResult::PENDING) {
+ ALOGI("===> traceKey A5.3, keycode=%d, interceptKeyResult=%d in %s of %s line %d", entry->keyCode, entry->interceptKeyResult, __func__, __FILE__, __LINE__);
return false;
}
setInjectionResult(*entry, injectionResult);
if (injectionResult != InputEventInjectionResult::SUCCEEDED) {
+ ALOGI("===> traceKey A5.2, keycode=%d, interceptKeyResult=%d in %s of %s line %d", entry->keyCode, entry->interceptKeyResult, __func__, __FILE__, __LINE__);
return true;
}
@@ -5704,6 +5716,7 @@ void InputDispatcher::doInterceptKeyBeforeDispatchingLockedInterruptible(
android::base::Timer t;
const sp<IBinder>& token = commandEntry->connectionToken;
+ ALOGI("===> traceKey A5, keycode=%d in %s of %s line %d", event.getKeyCode(), __func__, __FILE__, __LINE__);
nsecs_t delay = mPolicy->interceptKeyBeforeDispatching(token, &event, entry.policyFlags);
if (t.duration() > SLOW_INTERCEPTION_THRESHOLD) {
ALOGW("Excessive delay in interceptKeyBeforeDispatching; took %s ms",
diff --git a/services/inputflinger/reader/EventHub.cpp b/services/inputflinger/reader/EventHub.cpp
index b19b4195d1..de1135e754 100644
--- a/services/inputflinger/reader/EventHub.cpp
+++ b/services/inputflinger/reader/EventHub.cpp
@@ -1545,6 +1545,7 @@ size_t EventHub::getEvents(int timeoutMillis, RawEvent* buffer, size_t bufferSiz
}
}
+ ALOGI("===> traceKey D7, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
// Grab the next input event.
bool deviceChanged = false;
while (mPendingEventIndex < mPendingEventCount) {
@@ -1601,27 +1602,34 @@ size_t EventHub::getEvents(int timeoutMillis, RawEvent* buffer, size_t bufferSiz
}
continue;
}
+
+ ALOGI("===> traceKey D6, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
// This must be an input event
if (eventItem.events & EPOLLIN) {
int32_t readSize =
read(device->fd, readBuffer, sizeof(struct input_event) * capacity);
+ ALOGI("===> traceKey D6-1, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
if (readSize == 0 || (readSize < 0 && errno == ENODEV)) {
// Device was removed before INotify noticed.
ALOGW("could not get event, removed? (fd: %d size: %" PRId32
" bufferSize: %zu capacity: %zu errno: %d)\n",
device->fd, readSize, bufferSize, capacity, errno);
+ ALOGI("===> traceKey D6-1a, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
deviceChanged = true;
closeDeviceLocked(*device);
} else if (readSize < 0) {
+ ALOGI("===> traceKey D6-1b, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
if (errno != EAGAIN && errno != EINTR) {
ALOGW("could not get event (errno=%d)", errno);
}
} else if ((readSize % sizeof(struct input_event)) != 0) {
+ ALOGI("===> traceKey D6-1c, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
ALOGE("could not get event (wrong size: %d)", readSize);
} else {
int32_t deviceId = device->id == mBuiltInKeyboardId ? 0 : device->id;
size_t count = size_t(readSize) / sizeof(struct input_event);
+ ALOGI("===> traceKey D6-1d, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
for (size_t i = 0; i < count; i++) {
struct input_event& iev = readBuffer[i];
event->when = processEventTimestamp(iev);
@@ -1634,6 +1642,7 @@ size_t EventHub::getEvents(int timeoutMillis, RawEvent* buffer, size_t bufferSiz
capacity -= 1;
}
if (capacity == 0) {
+ ALOGI("===> traceKey D6-1d buffer full, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
// The result buffer is full. Reset the pending event index
// so we will try to read the device again on the next iteration.
mPendingEventIndex -= 1;
@@ -1641,16 +1650,19 @@ size_t EventHub::getEvents(int timeoutMillis, RawEvent* buffer, size_t bufferSiz
}
}
} else if (eventItem.events & EPOLLHUP) {
+ ALOGI("===> traceKey D6-2, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
ALOGI("Removing device %s due to epoll hang-up event.",
device->identifier.name.c_str());
deviceChanged = true;
closeDeviceLocked(*device);
} else {
+ ALOGI("===> traceKey D6-3, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
ALOGW("Received unexpected epoll event 0x%08x for device %s.", eventItem.events,
device->identifier.name.c_str());
}
}
+ ALOGI("===> traceKey D5, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
// readNotify() will modify the list of devices so this must be done after
// processing all other events to ensure that we read all remaining events
// before closing the devices.
diff --git a/services/inputflinger/reader/InputDevice.cpp b/services/inputflinger/reader/InputDevice.cpp
index 7af014cb34..a476bf7108 100644
--- a/services/inputflinger/reader/InputDevice.cpp
+++ b/services/inputflinger/reader/InputDevice.cpp
@@ -401,6 +401,7 @@ void InputDevice::process(const RawEvent* rawEvents, size_t count) {
reset(rawEvent->when);
} else {
for_each_mapper_in_subdevice(rawEvent->deviceId, [rawEvent](InputMapper& mapper) {
+ ALOGI("===> traceKey C0.2 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
mapper.process(rawEvent);
});
}
diff --git a/services/inputflinger/reader/InputReader.cpp b/services/inputflinger/reader/InputReader.cpp
index 10c04f606c..74c7963b84 100644
--- a/services/inputflinger/reader/InputReader.cpp
+++ b/services/inputflinger/reader/InputReader.cpp
@@ -34,6 +34,8 @@
#include "InputDevice.h"
+#define BLOGI(...) ALOG(LOG_INFO, "BFXBTF-484", __VA_ARGS__)
+
using android::base::StringPrintf;
namespace android {
@@ -112,6 +114,7 @@ void InputReader::loopOnce() {
mReaderIsAliveCondition.notify_all();
if (count) {
+ ALOGI("===> traceKey C3 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
processEventsLocked(mEventBuffer, count);
}
@@ -144,6 +147,7 @@ void InputReader::loopOnce() {
// resulting in a deadlock. This situation is actually quite plausible because the
// listener is actually the input dispatcher, which calls into the window manager,
// which occasionally calls into the input reader.
+ ALOGI("===> traceKey C0 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
mQueuedListener->flush();
}
@@ -163,6 +167,7 @@ void InputReader::processEventsLocked(const RawEvent* rawEvents, size_t count) {
#if DEBUG_RAW_EVENTS
ALOGD("BatchSize: %zu Count: %zu", batchSize, count);
#endif
+ ALOGI("===> traceKey C2 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
processEventsForDeviceLocked(deviceId, rawEvent, batchSize);
} else {
switch (rawEvent->type) {
@@ -298,15 +303,18 @@ void InputReader::processEventsForDeviceLocked(int32_t eventHubId, const RawEven
auto deviceIt = mDevices.find(eventHubId);
if (deviceIt == mDevices.end()) {
ALOGW("Discarding event for unknown eventHubId %d.", eventHubId);
+ BLOGI("===> traceKey C1.2 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
return;
}
std::shared_ptr<InputDevice>& device = deviceIt->second;
if (device->isIgnored()) {
// ALOGD("Discarding event for ignored deviceId %d.", deviceId);
+ BLOGI("===> traceKey C1.1 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
return;
}
+ ALOGI("===> traceKey C1 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
device->process(rawEvents, count);
}
diff --git a/services/inputflinger/reader/mapper/KeyboardInputMapper.cpp b/services/inputflinger/reader/mapper/KeyboardInputMapper.cpp
index 2ebca43c57..8860b18394 100644
--- a/services/inputflinger/reader/mapper/KeyboardInputMapper.cpp
+++ b/services/inputflinger/reader/mapper/KeyboardInputMapper.cpp
@@ -214,6 +214,7 @@ void KeyboardInputMapper::process(const RawEvent* rawEvent) {
mCurrentHidUsage = 0;
if (isKeyboardOrGamepadKey(scanCode)) {
+ ALOGI("===> traceKey C0.1 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
processKey(rawEvent->when, rawEvent->readTime, rawEvent->value != 0, scanCode,
usageCode);
}
--
2.25.1
|
|
|
Hi Bcan, We will check your patch and share you the result. Thanks. |
|
|
HI Bcan I checked after applying the test patch files. you opened all the debug messages as below. And you added debug log... ========================================================================== // Log detailed debug messages about each inbound event notification to the dispatcher. -#define DEBUG_INBOUND_EVENT_DETAILS 0 +#define DEBUG_INBOUND_EVENT_DETAILS 1 // Log detailed debug messages about each outbound event processed by the dispatcher. -#define DEBUG_OUTBOUND_EVENT_DETAILS 0 +#define DEBUG_OUTBOUND_EVENT_DETAILS 1 .. // Log debug messages about hover events. -#define DEBUG_HOVER 0 +#define DEBUG_HOVER 1 ========================================================================== When I checked test FW with the test patchs If I press the OK button once, 75 traceKey logs are output ============================================================== 08-07 14:05:18.904 3755 3872 I EventHub: ===> traceKey D7, in getEvents, in getEvents of frameworks/native/services/inputflinger/reader/EventHub.cpp line 1548 08-07 14:05:18.904 3755 3872 I EventHub: ===> traceKey D6, in getEvents, in getEvents of frameworks/native/services/inputflinger/reader/EventHub.cpp line 1606 08-07 14:05:18.904 3755 3872 I EventHub: ===> traceKey D6-1, in getEvents, in getEvents of frameworks/native/services/inputflinger/reader/EventHub.cpp line 1611 08-07 14:05:18.904 3755 3872 I EventHub: ===> traceKey D6-1d, in getEvents, in getEvents of frameworks/native/services/inputflinger/reader/EventHub.cpp line 1632 ... 08-07 14:05:19.046 3755 3871 I InputDispatcher: ===> traceKey A9.1 in dispatchOnceInnerLocked of frameworks/native/services/inputflinger/dispatcher/InputDispatcher.cpp line 737 .. 08-07 14:05:19.057 3755 3871 I InputDispatcher: ===> traceKey A9.1 in dispatchOnceInnerLocked of frameworks/native/services/inputflinger/dispatcher/InputDispatcher.cpp line 737 ================================================================================================================================= SKB doesn't want a lot of logs to be printed at OS12 First of all, please give us your opinion on the following items. 1) Is there a way to reduce logs (meaningless logs need to be deleted) 2) Please check if it is possible to modify the code in the following way. As far as I know, Key delivery is operated in the following order. EventHub --> InputReader --> InputDispatcher --> WindowManager If you detect the OK button at EventHub, which is the first input, So store the OK_count++ value in memory or file or property. and the OK button is entered in the WindowManager, it is a normal case, so OK_count-- So if there is no problem, the value of OK_count will be 0 or 1. If the problem occurs, OK_count will be 2 or higher, then you can print error log at WindowManager This will make debugging easier. Is it possible to implement code for debug in a similar way? Thank you YK.Jung |
|
|
Hi YK, 1. OK, I will reduce related debug messages. 2. I will try to add this debug feature. |
|
|
Hi Bcan Please update me on the progress When can we get test patch ? Thank you YK.Jung |
|
|
Hi YK, The patch will be provided in 8/23. |
|
|
Hi Bcan I got it, thank you YK.Jung |
|
|
Hi YK, Attached files are the patches for Android 12. Please check it. 1. traceKey logs are reduced 2. About "OK_count" a. use property "sys.vasott.key_check" for recording b. set key_check 1 in EventHub.java c. key_check-- in PhoneWindowManager.java d. Normally, "===> traceKey A1, update key_check_val=0" will appear twice(keyDown and keyUp) for each key e. if it shows "===> traceKey A1, update key_check_val=-1", it means users press keys quickly. f. if it shows "===> traceKey A1, update key_check_val=1", it means a key event is missed. g. The "OK_count" method may not work and always shows "key_check_val=0" and "key_check_val=-1" if the root cause located before the point "set key_check 1" in EventHub.java 0001-Add-debug-message-for-missing-OK-key-1-3.patch (1,507 bytes)
From b39cdd404e8ff7698dfa5afad5a799add8262b92 Mon Sep 17 00:00:00 2001
From: Bcan <bcan.cc.yeh@fii-foxconn.com>
Date: Fri, 23 Aug 2024 09:50:05 +0800
Subject: [PATCH] Add debug message for missing OK key (1/3)
---
.../android/server/policy/PhoneWindowManager.java | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index 5015954083c1..952a1aa9b1d9 100755
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -2837,6 +2837,18 @@ public class PhoneWindowManager implements WindowManagerPolicy {
+ " mDeviceId=" + event.getDeviceId() + " mSource=" + event.getSource() + " mScanCode=" + event.getScanCode() + " mCharacters=" + event.getCharacters());
}
+ String key_check = SystemProperties.get("sys.vasott.key_check");
+ int key_check_val = 0;
+ try{
+ key_check_val = Integer.parseInt(key_check);
+ } catch(NumberFormatException e){
+ e.printStackTrace();
+ key_check_val = 0;
+ }
+ key_check_val = key_check_val-1;
+ Log.i(TAG,"===> traceKey A1, update key_check_val="+key_check_val);
+ SystemProperties.set("sys.vasott.key_check", String.valueOf(key_check_val));
+
//SPTEK.MW : lastinput key property setting
if(down)
{
--
2.25.1
0001-Add-debug-message-for-missing-OK-key-2-3.patch (7,206 bytes)
From 9468d87287a70d680c21eba700296931f3e541f9 Mon Sep 17 00:00:00 2001
From: Bcan <bcan.cc.yeh@fii-foxconn.com>
Date: Fri, 23 Aug 2024 09:52:21 +0800
Subject: [PATCH] Add debug message for missing OK key (2/3)
---
services/inputflinger/reader/EventHub.cpp | 14 ++++++++++++++
services/inputflinger/reader/InputReader.cpp | 8 ++++++++
2 files changed, 22 insertions(+)
diff --git a/services/inputflinger/reader/EventHub.cpp b/services/inputflinger/reader/EventHub.cpp
index b19b4195d1..acefd74e20 100644
--- a/services/inputflinger/reader/EventHub.cpp
+++ b/services/inputflinger/reader/EventHub.cpp
@@ -1545,6 +1545,7 @@ size_t EventHub::getEvents(int timeoutMillis, RawEvent* buffer, size_t bufferSiz
}
}
+ ALOGI("===> traceKey D7, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
// Grab the next input event.
bool deviceChanged = false;
while (mPendingEventIndex < mPendingEventCount) {
@@ -1601,27 +1602,36 @@ size_t EventHub::getEvents(int timeoutMillis, RawEvent* buffer, size_t bufferSiz
}
continue;
}
+
+ ALOGI("===> traceKey D6, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
// This must be an input event
if (eventItem.events & EPOLLIN) {
int32_t readSize =
read(device->fd, readBuffer, sizeof(struct input_event) * capacity);
+ ALOGI("===> traceKey D6-1, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
if (readSize == 0 || (readSize < 0 && errno == ENODEV)) {
// Device was removed before INotify noticed.
ALOGW("could not get event, removed? (fd: %d size: %" PRId32
" bufferSize: %zu capacity: %zu errno: %d)\n",
device->fd, readSize, bufferSize, capacity, errno);
+ ALOGI("===> traceKey D6-1a, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
deviceChanged = true;
closeDeviceLocked(*device);
} else if (readSize < 0) {
+ ALOGI("===> traceKey D6-1b, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
if (errno != EAGAIN && errno != EINTR) {
ALOGW("could not get event (errno=%d)", errno);
}
} else if ((readSize % sizeof(struct input_event)) != 0) {
+ ALOGI("===> traceKey D6-1c, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
ALOGE("could not get event (wrong size: %d)", readSize);
} else {
int32_t deviceId = device->id == mBuiltInKeyboardId ? 0 : device->id;
size_t count = size_t(readSize) / sizeof(struct input_event);
+ ALOGI("===> traceKey D6-1d 0, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
+ property_set("sys.vasott.key_check","1");
+
for (size_t i = 0; i < count; i++) {
struct input_event& iev = readBuffer[i];
event->when = processEventTimestamp(iev);
@@ -1634,6 +1644,7 @@ size_t EventHub::getEvents(int timeoutMillis, RawEvent* buffer, size_t bufferSiz
capacity -= 1;
}
if (capacity == 0) {
+ ALOGI("===> traceKey D6-1d 5, buffer full, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
// The result buffer is full. Reset the pending event index
// so we will try to read the device again on the next iteration.
mPendingEventIndex -= 1;
@@ -1641,16 +1652,19 @@ size_t EventHub::getEvents(int timeoutMillis, RawEvent* buffer, size_t bufferSiz
}
}
} else if (eventItem.events & EPOLLHUP) {
+ ALOGI("===> traceKey D6-2, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
ALOGI("Removing device %s due to epoll hang-up event.",
device->identifier.name.c_str());
deviceChanged = true;
closeDeviceLocked(*device);
} else {
+ ALOGI("===> traceKey D6-3, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
ALOGW("Received unexpected epoll event 0x%08x for device %s.", eventItem.events,
device->identifier.name.c_str());
}
}
+ ALOGI("===> traceKey D5, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
// readNotify() will modify the list of devices so this must be done after
// processing all other events to ensure that we read all remaining events
// before closing the devices.
diff --git a/services/inputflinger/reader/InputReader.cpp b/services/inputflinger/reader/InputReader.cpp
index 10c04f606c..74c7963b84 100644
--- a/services/inputflinger/reader/InputReader.cpp
+++ b/services/inputflinger/reader/InputReader.cpp
@@ -34,6 +34,8 @@
#include "InputDevice.h"
+#define BLOGI(...) ALOG(LOG_INFO, "BFXBTF-484", __VA_ARGS__)
+
using android::base::StringPrintf;
namespace android {
@@ -112,6 +114,7 @@ void InputReader::loopOnce() {
mReaderIsAliveCondition.notify_all();
if (count) {
+ ALOGI("===> traceKey C3 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
processEventsLocked(mEventBuffer, count);
}
@@ -144,6 +147,7 @@ void InputReader::loopOnce() {
// resulting in a deadlock. This situation is actually quite plausible because the
// listener is actually the input dispatcher, which calls into the window manager,
// which occasionally calls into the input reader.
+ ALOGI("===> traceKey C0 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
mQueuedListener->flush();
}
@@ -163,6 +167,7 @@ void InputReader::processEventsLocked(const RawEvent* rawEvents, size_t count) {
#if DEBUG_RAW_EVENTS
ALOGD("BatchSize: %zu Count: %zu", batchSize, count);
#endif
+ ALOGI("===> traceKey C2 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
processEventsForDeviceLocked(deviceId, rawEvent, batchSize);
} else {
switch (rawEvent->type) {
@@ -298,15 +303,18 @@ void InputReader::processEventsForDeviceLocked(int32_t eventHubId, const RawEven
auto deviceIt = mDevices.find(eventHubId);
if (deviceIt == mDevices.end()) {
ALOGW("Discarding event for unknown eventHubId %d.", eventHubId);
+ BLOGI("===> traceKey C1.2 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
return;
}
std::shared_ptr<InputDevice>& device = deviceIt->second;
if (device->isIgnored()) {
// ALOGD("Discarding event for ignored deviceId %d.", deviceId);
+ BLOGI("===> traceKey C1.1 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
return;
}
+ ALOGI("===> traceKey C1 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
device->process(rawEvents, count);
}
--
2.25.1
0001-Add-debug-message-for-missing-OK-key-3-3.patch (762 bytes)
From d5ebda54bd62526c6c2c0a4c2d50eb7df489f325 Mon Sep 17 00:00:00 2001
From: Bcan <bcan.cc.yeh@fii-foxconn.com>
Date: Fri, 23 Aug 2024 09:59:31 +0800
Subject: [PATCH] Add debug message for missing OK key (3/3)
---
prebuilts/etc/init/vasott_script_sh.rc | 1 +
1 file changed, 1 insertion(+)
diff --git a/prebuilts/etc/init/vasott_script_sh.rc b/prebuilts/etc/init/vasott_script_sh.rc
index db45a5d..637a80b 100644
--- a/prebuilts/etc/init/vasott_script_sh.rc
+++ b/prebuilts/etc/init/vasott_script_sh.rc
@@ -7,6 +7,7 @@ service vasott_script /system/bin/vasott_script.sh
on property:sys.boot_completed=1
start vasott_script
+ setprop sys.vasott.key_check 0
on property:vendor.vasott.cecotpcheck=1
setprop vendor.vasott.cecotp 1
--
2.25.1
|
|
|
Hi YK, Please ignore the patch above. Use new patch files here. 1. traceKey logs are reduced 2. About "OK_count" a. use property "sys.vasott.key_check" for recording b. set key_check 1 while detecting OK key in EventHub.java c. key_check-- while detecting OK key in PhoneWindowManager.java d. Normally, "===> traceKey A1, OK key detected, update key_check_val=0" will appear twice(keyDown and keyUp) for OK key e. if it shows "===> traceKey A1, OK key detected, update key_check_val=-1", it means users press OK key quickly. f. if it shows "===> traceKey A1, OK key detected, update key_check_val=1", it means an OK key event is missed. g. The "OK_count" method may not work and always shows "key_check_val=0" and "key_check_val=-1" if the root cause located before the point "set key_check 1" in EventHub.java update_0001-Add-debug-message-for-missing-OK-key-1-3.patch (1,618 bytes)
From 245c73b49e3c8e0d80440d28c6dded971a72205b Mon Sep 17 00:00:00 2001
From: Bcan <bcan.cc.yeh@fii-foxconn.com>
Date: Fri, 23 Aug 2024 14:29:03 +0800
Subject: [PATCH] Add debug message for missing OK key (1/3)
---
.../android/server/policy/PhoneWindowManager.java | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index 5015954083c1..1e58d7944c63 100755
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -2837,6 +2837,20 @@ public class PhoneWindowManager implements WindowManagerPolicy {
+ " mDeviceId=" + event.getDeviceId() + " mSource=" + event.getSource() + " mScanCode=" + event.getScanCode() + " mCharacters=" + event.getCharacters());
}
+ if(event.getScanCode()==232){
+ String key_check = SystemProperties.get("sys.vasott.key_check");
+ int key_check_val = 0;
+ try{
+ key_check_val = Integer.parseInt(key_check);
+ } catch(NumberFormatException e){
+ e.printStackTrace();
+ key_check_val = 0;
+ }
+ key_check_val = key_check_val-1;
+ Log.i(TAG,"===> traceKey A1, OK key detected, update key_check_val="+key_check_val);
+ SystemProperties.set("sys.vasott.key_check", String.valueOf(key_check_val));
+ }
+
//SPTEK.MW : lastinput key property setting
if(down)
{
--
2.25.1
update_0001-Add-debug-message-for-missing-OK-key-2-3.patch (6,966 bytes)
From 7503edf2f824ee99ec26f0b94eb5053627a2bed0 Mon Sep 17 00:00:00 2001
From: Bcan <bcan.cc.yeh@fii-foxconn.com>
Date: Fri, 23 Aug 2024 14:41:27 +0800
Subject: [PATCH] Add debug message for missing OK key (2/3)
---
services/inputflinger/reader/EventHub.cpp | 17 +++++++++++++++++
services/inputflinger/reader/InputReader.cpp | 8 ++++++++
2 files changed, 25 insertions(+)
diff --git a/services/inputflinger/reader/EventHub.cpp b/services/inputflinger/reader/EventHub.cpp
index b19b4195d1..d9e514ef15 100644
--- a/services/inputflinger/reader/EventHub.cpp
+++ b/services/inputflinger/reader/EventHub.cpp
@@ -1601,29 +1601,43 @@ size_t EventHub::getEvents(int timeoutMillis, RawEvent* buffer, size_t bufferSiz
}
continue;
}
+
+ ALOGI("===> traceKey D6, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
// This must be an input event
if (eventItem.events & EPOLLIN) {
int32_t readSize =
read(device->fd, readBuffer, sizeof(struct input_event) * capacity);
+ ALOGI("===> traceKey D6-1, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
if (readSize == 0 || (readSize < 0 && errno == ENODEV)) {
// Device was removed before INotify noticed.
ALOGW("could not get event, removed? (fd: %d size: %" PRId32
" bufferSize: %zu capacity: %zu errno: %d)\n",
device->fd, readSize, bufferSize, capacity, errno);
+ ALOGI("===> traceKey D6-1a, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
deviceChanged = true;
closeDeviceLocked(*device);
} else if (readSize < 0) {
+ ALOGI("===> traceKey D6-1b, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
if (errno != EAGAIN && errno != EINTR) {
ALOGW("could not get event (errno=%d)", errno);
}
} else if ((readSize % sizeof(struct input_event)) != 0) {
+ ALOGI("===> traceKey D6-1c, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
ALOGE("could not get event (wrong size: %d)", readSize);
} else {
int32_t deviceId = device->id == mBuiltInKeyboardId ? 0 : device->id;
size_t count = size_t(readSize) / sizeof(struct input_event);
+ ALOGI("===> traceKey D6-1d 0, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
+
for (size_t i = 0; i < count; i++) {
struct input_event& iev = readBuffer[i];
+ ALOGI("===> traceKey D6-1d 1, code=%d, in getEvents, in %s of %s line %d" ,iev.code,__func__ ,__FILE__ ,__LINE__);
+ if(iev.code==232) {
+ ALOGI("===> traceKey D6-1d 2, OK key detected, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
+ property_set("sys.vasott.key_check","1");
+ }
+
event->when = processEventTimestamp(iev);
event->readTime = systemTime(SYSTEM_TIME_MONOTONIC);
event->deviceId = deviceId;
@@ -1634,6 +1648,7 @@ size_t EventHub::getEvents(int timeoutMillis, RawEvent* buffer, size_t bufferSiz
capacity -= 1;
}
if (capacity == 0) {
+ ALOGI("===> traceKey D6-1d 5, buffer full, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
// The result buffer is full. Reset the pending event index
// so we will try to read the device again on the next iteration.
mPendingEventIndex -= 1;
@@ -1641,11 +1656,13 @@ size_t EventHub::getEvents(int timeoutMillis, RawEvent* buffer, size_t bufferSiz
}
}
} else if (eventItem.events & EPOLLHUP) {
+ ALOGI("===> traceKey D6-2, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
ALOGI("Removing device %s due to epoll hang-up event.",
device->identifier.name.c_str());
deviceChanged = true;
closeDeviceLocked(*device);
} else {
+ ALOGI("===> traceKey D6-3, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
ALOGW("Received unexpected epoll event 0x%08x for device %s.", eventItem.events,
device->identifier.name.c_str());
}
diff --git a/services/inputflinger/reader/InputReader.cpp b/services/inputflinger/reader/InputReader.cpp
index 10c04f606c..74c7963b84 100644
--- a/services/inputflinger/reader/InputReader.cpp
+++ b/services/inputflinger/reader/InputReader.cpp
@@ -34,6 +34,8 @@
#include "InputDevice.h"
+#define BLOGI(...) ALOG(LOG_INFO, "BFXBTF-484", __VA_ARGS__)
+
using android::base::StringPrintf;
namespace android {
@@ -112,6 +114,7 @@ void InputReader::loopOnce() {
mReaderIsAliveCondition.notify_all();
if (count) {
+ ALOGI("===> traceKey C3 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
processEventsLocked(mEventBuffer, count);
}
@@ -144,6 +147,7 @@ void InputReader::loopOnce() {
// resulting in a deadlock. This situation is actually quite plausible because the
// listener is actually the input dispatcher, which calls into the window manager,
// which occasionally calls into the input reader.
+ ALOGI("===> traceKey C0 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
mQueuedListener->flush();
}
@@ -163,6 +167,7 @@ void InputReader::processEventsLocked(const RawEvent* rawEvents, size_t count) {
#if DEBUG_RAW_EVENTS
ALOGD("BatchSize: %zu Count: %zu", batchSize, count);
#endif
+ ALOGI("===> traceKey C2 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
processEventsForDeviceLocked(deviceId, rawEvent, batchSize);
} else {
switch (rawEvent->type) {
@@ -298,15 +303,18 @@ void InputReader::processEventsForDeviceLocked(int32_t eventHubId, const RawEven
auto deviceIt = mDevices.find(eventHubId);
if (deviceIt == mDevices.end()) {
ALOGW("Discarding event for unknown eventHubId %d.", eventHubId);
+ BLOGI("===> traceKey C1.2 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
return;
}
std::shared_ptr<InputDevice>& device = deviceIt->second;
if (device->isIgnored()) {
// ALOGD("Discarding event for ignored deviceId %d.", deviceId);
+ BLOGI("===> traceKey C1.1 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
return;
}
+ ALOGI("===> traceKey C1 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
device->process(rawEvents, count);
}
--
2.25.1
update_0001-Add-debug-message-for-missing-OK-key-3-3.patch (762 bytes)
From d5ebda54bd62526c6c2c0a4c2d50eb7df489f325 Mon Sep 17 00:00:00 2001
From: Bcan <bcan.cc.yeh@fii-foxconn.com>
Date: Fri, 23 Aug 2024 09:59:31 +0800
Subject: [PATCH] Add debug message for missing OK key (3/3)
---
prebuilts/etc/init/vasott_script_sh.rc | 1 +
1 file changed, 1 insertion(+)
diff --git a/prebuilts/etc/init/vasott_script_sh.rc b/prebuilts/etc/init/vasott_script_sh.rc
index db45a5d..637a80b 100644
--- a/prebuilts/etc/init/vasott_script_sh.rc
+++ b/prebuilts/etc/init/vasott_script_sh.rc
@@ -7,6 +7,7 @@ service vasott_script /system/bin/vasott_script.sh
on property:sys.boot_completed=1
start vasott_script
+ setprop sys.vasott.key_check 0
on property:vendor.vasott.cecotpcheck=1
setprop vendor.vasott.cecotp 1
--
2.25.1
|
|
|
Hi Bcan Thank you , we will review the patch and proceed with the stability test if there is no problem. and I will update you on the 1st feedback before 8/30 ( this week ). Thank you YK.Jung |
|
|
Hi Bcan I tested your patch.. but strange patter has been observed, so please check it =================================================================================================================== 08-28 04:57:50.800 I 3715 3819 WindowManager: ===> traceKey A1, OK key detected, update key_check_val=0 08-28 04:58:03.531 I 3715 3819 WindowManager: ===> traceKey A1, OK key detected, update key_check_val=0 08-28 04:58:03.917 I 3715 3819 WindowManager: ===> traceKey A1, OK key detected, update key_check_val=-1 08-28 04:58:03.967 I 3715 3819 WindowManager: ===> traceKey A1, OK key detected, update key_check_val=-2 08-28 04:58:04.021 I 3715 3819 WindowManager: ===> traceKey A1, OK key detected, update key_check_val=-3 08-28 04:58:04.068 I 3715 3819 WindowManager: ===> traceKey A1, OK key detected, update key_check_val=-4 08-28 04:58:04.120 I 3715 3819 WindowManager: ===> traceKey A1, OK key detected, update key_check_val=-5 08-28 04:58:04.169 I 3715 3819 WindowManager: ===> traceKey A1, OK key detected, update key_check_val=-6 08-28 04:58:04.224 I 3715 3819 WindowManager: ===> traceKey A1, OK key detected, update key_check_val=-7 08-28 04:58:04.237 I 3715 3819 WindowManager: ===> traceKey A1, OK key detected, update key_check_val=-8 ==================================================================================================================== Thank you YK.Jung |
|
|
Hi YK, That is caused by "Long Press". Please ignore it. |
|
|
Hi Bacn Using the attached Monkey test script, EventHub events are being observed. The test script is frequently entered for the OK button. Therefore, if the OK button is not input for a certain period of time, we can check it. In a test script, the following values may need to be changed depending on the environment of the STB # BT input_device=event6 After rcu pairing, the test was done This is the result of proceeding with the test script. 1) Please check the key_check_val value , It's not a long press key action (logcat.log.0062.zip) 09-08 14:17:18.769 3737 3896 I WindowManager: ===> traceKey A1, OK key detected, update key_check_val=0 09-08 14:17:19.404 3737 3896 I WindowManager: ===> traceKey A1, OK key detected, update key_check_val=-5 (?) 09-08 14:17:19.454 3737 3896 I WindowManager: ===> traceKey A1, OK key detected, update key_check_val=-6 (?) 09-08 14:17:19.484 3737 3896 I WindowManager: ===> traceKey A1, OK key detected, update key_check_val=0 ... 09-08 14:17:46.113 3737 3896 I WindowManager: ===> traceKey A1, OK key detected, update key_check_val=0 09-08 14:17:49.300 3737 3896 I WindowManager: ===> traceKey A1, OK key detected, update key_check_val=0 09-08 14:17:49.680 3737 3896 I WindowManager: ===> traceKey A1, OK key detected, update key_check_val=-1 09-08 14:17:49.729 3737 3896 I WindowManager: ===> traceKey A1, OK key detected, update key_check_val=-2 09-08 14:17:49.921 3737 3896 I WindowManager: ===> traceKey A1, OK key detected, update key_check_val=-3 09-08 14:17:49.966 3737 3896 I WindowManager: ===> traceKey A1, OK key detected, update key_check_val=-4 09-08 14:17:50.020 3737 3896 I WindowManager: ===> traceKey A1, OK key detected, update key_check_val=-5 09-08 14:17:50.171 3737 3896 I WindowManager: ===> traceKey A1, OK key detected, update key_check_val=-8 (?) 09-08 14:17:50.178 3737 3896 I WindowManager: ===> traceKey A1, OK key detected, update key_check_val=0 09-08 14:17:53.827 3737 3896 I WindowManager: ===> traceKey A1, OK key detected, update key_check_val=0 09-08 14:17:54.203 3737 3896 I WindowManager: ===> traceKey A1, OK key detected, update key_check_val=-1 09-08 14:17:54.248 3737 3896 I WindowManager: ===> traceKey A1, OK key detected, update key_check_val=-2 09-08 14:17:54.300 3737 3896 I WindowManager: ===> traceKey A1, OK key detected, update key_check_val=-3 09-08 14:17:54.562 3737 3896 I WindowManager: ===> traceKey A1, OK key detected, update key_check_val=-4 (?) 09-08 14:17:55.077 3737 3896 I WindowManager: ===> traceKey A1, OK key detected, update key_check_val=0 09-08 14:17:58.647 3737 3896 I WindowManager: ===> traceKey A1, OK key detected, update key_check_val=0 2) Please check the log on 09-08 15:52:09.524. logcat.log.0048.zip 09-08 15:51:57.937 I 3737 3897 InputReader: ===> traceKey C1 in processEventsForDeviceLocked of frameworks/native/services/inputflinger/reader/InputReader.cpp line 317 09-08 15:51:57.937 I 3737 3897 InputReader: ===> traceKey C0 in loopOnce of frameworks/native/services/inputflinger/reader/InputReader.cpp line 150 09-08 15:52:09.524 I 3737 3897 InputReader: ===> traceKey C0 in loopOnce of frameworks/native/services/inputflinger/reader/InputReader.cpp line 150 <== (?) 09-08 15:52:10.329 I 3737 3897 EventHub: ===> traceKey D6, in getEvents, in getEvents of frameworks/native/services/inputflinger/reader/EventHub.cpp line 1605 09-08 15:52:10.329 I 3737 3897 EventHub: ===> traceKey D6-1, in getEvents, in getEvents of frameworks/native/services/inputflinger/reader/EventHub.cpp line 1610 3) Key events have not occurred for more than 10 seconds. logcat.log.0329.zip */ 09-07 08:19:51.217 I 3737 3897 EventHub: New device: id=60, fd=176, path=/dev/input/event6, name=BRM_BA02_003, classes=KEYBOARD | DPAD | GAMEPAD | MIC | EXTERNAL, configuration=/vendor/usr/idc/Vendor_005d_Product_0002.idc, keyLayout=/vendor/usr/keylayout/Vendor_005d_Product_0002.kl, keyCharacterMap=/system/usr/keychars/Generic.kcm, builtinKeyboard=false, 09-07 08:19:51.217 I 3737 3897 InputReader: ===> traceKey C3 in loopOnce of frameworks/native/services/inputflinger/reader/InputReader.cpp line 117 4) The following statistics are the three-day logvel. Of course, there seems to be a percentage of debug logs, even though there are a lot of RCU actions. is there a way to reduce it a little more? 4.22 + 3.09 = 7.31 (nearly the best ratio log is being observed) [Log Level Counts (Descending Order): total_count = 41275838 NAVIGATOR_DSMCC: 3014994 (7.30%) EventHub: 1741719 (4.22%) ( <== trace key log ) HomeFragment: 1579704 (3.83%) FragmentControl: 1556974 (3.77%) LiveTvMiniEpgFragment: 1474244 (3.57%) DockMenuManager: 1281818 (3.11%) InputReader: 1276978 (3.09%) ( <== trace key log ) BTV_IMEService: 1242089 (3.01%) WindowManager: 1120448 (2.71%) ( <== some trace key log ) UIControlManager: 996662 (2.41%) STBGlobal: 996425 (2.41%) LivePlayer_0: 954690 (2.31%) VcsHomeModel: 824369 (2.00%) PropertyService: 804153 (1.95%) MainActivity: 787583 (1.91%) VcsHomePlayerControl: 735166 (1.78%) MiniAmVideoDec_0: 647902 (1.57%) ReceiveInterfaceManager: 600748 (1.46%) MiniAmFFmpegExtractor_0: 593863 (1.44%) LivePlayerClock_0: 587254 (1.42%) BtvMediaPlayer: 579634 (1.40%) PlayerManager: 566442 (1.37%) AmlHalPlayerImpl_0: 524867 (1.27%) HalAudioOutput_0: 519709 (1.26%) AmCodecVDA: 516821 (1.25%) AnypointAD: 500541 (1.21%) memtrack_aml: 480944 (1.17%) OmxComponent: 479896 (1.16%) Please check it Thank you YK.Jung |
|
|
Hi YK, 1) Please check the key_check_val value , It's not a long press key action (logcat.log.0062.zip) 1.The negative value is caused by the sleep between sendevent. sendevent /dev/input/$input_device 1 232 1 sendevent /dev/input/$input_device 0 0 0 ------> keydown event sleep $key_delay_1 ------> sleep may cause repeated events sendevent /dev/input/$input_device 1 232 0 sendevent /dev/input/$input_device 0 0 0 ------> keyup event You can try this by sending keydown commands first. And you will see a lot of negative key_check values until sending keyup event. 2. The discontinuous negative values might be caused by insufficient ring buffer of logcat. Use "logcat -g", you can check the buffer size and consumed size. If consumed size is close to ring buffer size, some logs might be lost due to insufficient buffer size at that time. 2) Please check the log on 09-08 15:52:09.524. logcat.log.0048.zip => "traceKey C0" will appear without any key event. This message will be removed. 3) Key events have not occurred for more than 10 seconds. logcat.log.0329.zip */ => According to the log below, no key event occurred due to device removing and adding. (08:19:35-08:19:51) -------------------------------------------------- 09-07 08:19:35.029 3737 3897 I EventHub: ===> traceKey D6, in getEvents, in getEvents of frameworks/native/services/inputflinger/reader/EventHub.cpp line 1605 09-07 08:19:35.029 3737 3897 I EventHub: ===> traceKey D6-2, in getEvents, in getEvents of frameworks/native/services/inputflinger/reader/EventHub.cpp line 1659 09-07 08:19:35.034 3737 3897 I EventHub: Removing device BRM_BA02_003 due to epoll hang-up event. 09-07 08:19:35.034 3737 3897 I EventHub: Removed device: path=/dev/input/event6 name=BRM_BA02_003 id=59 fd=176 classes=KEYBOARD | DPAD | GAMEPAD | MIC | EXTERNAL 09-07 08:19:35.073 3737 3897 I EventHub: Removing device '/dev/input/event6' due to inotify event 09-07 08:19:51.217 3737 3897 I EventHub: usingClockIoctl=true 09-07 08:19:51.217 3737 3897 I EventHub: New device: id=60, fd=176, path='/dev/input/event6', name='BRM_BA02_003', classes=KEYBOARD | DPAD | GAMEPAD | MIC | EXTERNAL, configuration='/vendor/usr/idc/Vendor_005d_Product_0002.idc', keyLayout='/vendor/usr/keylayout/Vendor_005d_Product_0002.kl', keyCharacterMap='/system/usr/keychars/Generic.kcm', builtinKeyboard=false, 09-07 08:19:51.244 3737 3897 I EventHub: ===> traceKey D6, in getEvents, in getEvents of frameworks/native/services/inputflinger/reader/EventHub.cpp line 1605 -------------------------------------------------- 4) The following statistics are the three-day logvel. => I will remove some messages in next patches. |
|
|
Hi Bcan Thank you for your analysis. It's currently under internal testing, but it's not reproducing. It's still trying. And the same issue was observed on STB (OS12), which does not include the log you added. SKB manager reported it and I checked it. I don't see any clue. Please look at the log to see if there are any clues. Thank you YK.jung |
|
|
Hi YK, The patches are updated. Please check the attached files. 1. Reduce log messages. ("traceKey A1"/"traceKey C0" are removed) 2. For key_check, please find the message. "===> traceKey D6-1d 2, OK key detected, old_key_check=0, key_check=0" The value of key_check decreases starting from 0. key_check=0 --> normal, no long press happened key_check=-1 key_check=-2 key_check=-3 key_check=-4 --> long press happened key_check=-4 --> normal, no new long press happened key_check=-4 --> normal, no new long press happened key_check=-3 --> If key_check increased, it will print "===> traceKey D6-1d 3, There might be a issue happened!". This could be one of the following two cases. a. Recoverable increaing It's caused by pressing intensively and quickly. And key_check will decrease to -4 afterward. ps. key_check could also be -4, -3, -2, -1, -2, -3, -4. b. Unrecoverable increaing It ought to be the case we are finding. OK key is missing. Please provide log for analysis. |
|
|
0001-Add-debug-message-for-missing-OK-key-1-3_20240913.patch (1,707 bytes)
From a65a88722bb25889749df337ee0814345fb28557 Mon Sep 17 00:00:00 2001
From: Bcan <bcan.cc.yeh@fii-foxconn.com>
Date: Fri, 13 Sep 2024 14:20:38 +0800
Subject: [PATCH] Add debug message for missing OK key (1/3)
---
.../android/server/policy/PhoneWindowManager.java | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index 5015954083c1..240891eef734 100755
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -2837,6 +2837,21 @@ public class PhoneWindowManager implements WindowManagerPolicy {
+ " mDeviceId=" + event.getDeviceId() + " mSource=" + event.getSource() + " mScanCode=" + event.getScanCode() + " mCharacters=" + event.getCharacters());
}
+ if(event.getScanCode()==232){
+ String key_check = SystemProperties.get("sys.vasott.key_check");
+ //Log.i(TAG,"===> traceKey A1a, OK key detected, key_check="+key_check);
+ int key_check_val = 0;
+ try{
+ key_check_val = Integer.parseInt(key_check);
+ } catch(NumberFormatException e){
+ e.printStackTrace();
+ key_check_val = 0;
+ }
+ key_check_val = key_check_val-1;
+ SystemProperties.set("sys.vasott.key_check", String.valueOf(key_check_val));
+ //Log.i(TAG,"===> traceKey A1b, OK key detected, update key_check_val="+key_check_val);
+ }
+
//SPTEK.MW : lastinput key property setting
if(down)
{
--
2.25.1
0001-Add-debug-message-for-missing-OK-key-2-3_20240913.patch (8,562 bytes)
From 3c2233535259194304d9526603aa960b57ad7592 Mon Sep 17 00:00:00 2001
From: Bcan <bcan.cc.yeh@fii-foxconn.com>
Date: Fri, 13 Sep 2024 14:21:26 +0800
Subject: [PATCH] Add debug message for missing OK key (2/3)
---
services/inputflinger/reader/EventHub.cpp | 29 +++++++++++++++++++
services/inputflinger/reader/InputReader.cpp | 8 +++++
.../inputflinger/reader/include/EventHub.h | 3 ++
3 files changed, 40 insertions(+)
diff --git a/services/inputflinger/reader/EventHub.cpp b/services/inputflinger/reader/EventHub.cpp
index b19b4195d1..7ed2af598b 100644
--- a/services/inputflinger/reader/EventHub.cpp
+++ b/services/inputflinger/reader/EventHub.cpp
@@ -1547,6 +1547,7 @@ size_t EventHub::getEvents(int timeoutMillis, RawEvent* buffer, size_t bufferSiz
// Grab the next input event.
bool deviceChanged = false;
+ int32_t key_check = -1;
while (mPendingEventIndex < mPendingEventCount) {
const struct epoll_event& eventItem = mPendingEventItems[mPendingEventIndex++];
if (eventItem.data.fd == mINotifyFd) {
@@ -1601,29 +1602,54 @@ size_t EventHub::getEvents(int timeoutMillis, RawEvent* buffer, size_t bufferSiz
}
continue;
}
+
+ ALOGI("===> traceKey D6, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
// This must be an input event
if (eventItem.events & EPOLLIN) {
int32_t readSize =
read(device->fd, readBuffer, sizeof(struct input_event) * capacity);
+ ALOGI("===> traceKey D6-1, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
if (readSize == 0 || (readSize < 0 && errno == ENODEV)) {
// Device was removed before INotify noticed.
ALOGW("could not get event, removed? (fd: %d size: %" PRId32
" bufferSize: %zu capacity: %zu errno: %d)\n",
device->fd, readSize, bufferSize, capacity, errno);
+ ALOGI("===> traceKey D6-1a, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
deviceChanged = true;
closeDeviceLocked(*device);
} else if (readSize < 0) {
+ ALOGI("===> traceKey D6-1b, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
if (errno != EAGAIN && errno != EINTR) {
ALOGW("could not get event (errno=%d)", errno);
}
} else if ((readSize % sizeof(struct input_event)) != 0) {
+ ALOGI("===> traceKey D6-1c, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
ALOGE("could not get event (wrong size: %d)", readSize);
} else {
int32_t deviceId = device->id == mBuiltInKeyboardId ? 0 : device->id;
size_t count = size_t(readSize) / sizeof(struct input_event);
+ ALOGI("===> traceKey D6-1d 0, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
+
for (size_t i = 0; i < count; i++) {
struct input_event& iev = readBuffer[i];
+ ALOGI("===> traceKey D6-1d 1, code=%d, in getEvents, in %s of %s line %d" ,iev.code,__func__ ,__FILE__ ,__LINE__);
+ if(iev.code==232) {
+ char tmps[11]={0};
+ key_check = property_get_int32("sys.vasott.key_check", 0);
+ ALOGI("===> traceKey D6-1d 2, OK key detected, old_key_check=%d, key_check=%d", old_key_check, key_check);
+ if(old_key_check<key_check)
+ {
+ ALOGI("===> traceKey D6-1d 3, There might be a issue happened!");
+ }
+ old_key_check=key_check;
+ //ALOGI("===> traceKey D6-1d 4, OK key detected, old_key_check=%d, key_check=%d", old_key_check, key_check);
+ key_check++;
+ sprintf(tmps,"%d",key_check);
+ //ALOGI("===> traceKey D6-1d 4a, OK key detected, key_check=%s", tmps);
+ property_set("sys.vasott.key_check",tmps);
+ }
+
event->when = processEventTimestamp(iev);
event->readTime = systemTime(SYSTEM_TIME_MONOTONIC);
event->deviceId = deviceId;
@@ -1634,6 +1660,7 @@ size_t EventHub::getEvents(int timeoutMillis, RawEvent* buffer, size_t bufferSiz
capacity -= 1;
}
if (capacity == 0) {
+ ALOGI("===> traceKey D6-1d 5, buffer full, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
// The result buffer is full. Reset the pending event index
// so we will try to read the device again on the next iteration.
mPendingEventIndex -= 1;
@@ -1641,11 +1668,13 @@ size_t EventHub::getEvents(int timeoutMillis, RawEvent* buffer, size_t bufferSiz
}
}
} else if (eventItem.events & EPOLLHUP) {
+ ALOGI("===> traceKey D6-2, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
ALOGI("Removing device %s due to epoll hang-up event.",
device->identifier.name.c_str());
deviceChanged = true;
closeDeviceLocked(*device);
} else {
+ ALOGI("===> traceKey D6-3, in getEvents, in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
ALOGW("Received unexpected epoll event 0x%08x for device %s.", eventItem.events,
device->identifier.name.c_str());
}
diff --git a/services/inputflinger/reader/InputReader.cpp b/services/inputflinger/reader/InputReader.cpp
index 10c04f606c..0b6bf7b476 100644
--- a/services/inputflinger/reader/InputReader.cpp
+++ b/services/inputflinger/reader/InputReader.cpp
@@ -34,6 +34,8 @@
#include "InputDevice.h"
+#define BLOGI(...) ALOG(LOG_INFO, "BFXBTF-484", __VA_ARGS__)
+
using android::base::StringPrintf;
namespace android {
@@ -112,6 +114,7 @@ void InputReader::loopOnce() {
mReaderIsAliveCondition.notify_all();
if (count) {
+ ALOGI("===> traceKey C3 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
processEventsLocked(mEventBuffer, count);
}
@@ -144,6 +147,7 @@ void InputReader::loopOnce() {
// resulting in a deadlock. This situation is actually quite plausible because the
// listener is actually the input dispatcher, which calls into the window manager,
// which occasionally calls into the input reader.
+ //ALOGI("===> traceKey C0 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
mQueuedListener->flush();
}
@@ -163,6 +167,7 @@ void InputReader::processEventsLocked(const RawEvent* rawEvents, size_t count) {
#if DEBUG_RAW_EVENTS
ALOGD("BatchSize: %zu Count: %zu", batchSize, count);
#endif
+ ALOGI("===> traceKey C2 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
processEventsForDeviceLocked(deviceId, rawEvent, batchSize);
} else {
switch (rawEvent->type) {
@@ -298,15 +303,18 @@ void InputReader::processEventsForDeviceLocked(int32_t eventHubId, const RawEven
auto deviceIt = mDevices.find(eventHubId);
if (deviceIt == mDevices.end()) {
ALOGW("Discarding event for unknown eventHubId %d.", eventHubId);
+ BLOGI("===> traceKey C1.2 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
return;
}
std::shared_ptr<InputDevice>& device = deviceIt->second;
if (device->isIgnored()) {
// ALOGD("Discarding event for ignored deviceId %d.", deviceId);
+ BLOGI("===> traceKey C1.1 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
return;
}
+ ALOGI("===> traceKey C1 in %s of %s line %d" ,__func__ ,__FILE__ ,__LINE__);
device->process(rawEvents, count);
}
diff --git a/services/inputflinger/reader/include/EventHub.h b/services/inputflinger/reader/include/EventHub.h
index 410a7063ea..bfd0c54d15 100644
--- a/services/inputflinger/reader/include/EventHub.h
+++ b/services/inputflinger/reader/include/EventHub.h
@@ -713,6 +713,9 @@ private:
size_t mPendingEventCount;
size_t mPendingEventIndex;
bool mPendingINotify;
+
+
+ int32_t old_key_check=0;
};
}; // namespace android
--
2.25.1
0001-Add-debug-message-for-missing-OK-key-3-3_20240913.patch (762 bytes)
From b20ccfa4e99bd436bb654e32abb5aa96ffa1e284 Mon Sep 17 00:00:00 2001
From: Bcan <bcan.cc.yeh@fii-foxconn.com>
Date: Fri, 13 Sep 2024 14:23:26 +0800
Subject: [PATCH] Add debug message for missing OK key (3/3)
---
prebuilts/etc/init/vasott_script_sh.rc | 1 +
1 file changed, 1 insertion(+)
diff --git a/prebuilts/etc/init/vasott_script_sh.rc b/prebuilts/etc/init/vasott_script_sh.rc
index db45a5d..637a80b 100644
--- a/prebuilts/etc/init/vasott_script_sh.rc
+++ b/prebuilts/etc/init/vasott_script_sh.rc
@@ -7,6 +7,7 @@ service vasott_script /system/bin/vasott_script.sh
on property:sys.boot_completed=1
start vasott_script
+ setprop sys.vasott.key_check 0
on property:vendor.vasott.cecotpcheck=1
setprop vendor.vasott.cecotp 1
--
2.25.1
|
|
|
Hi Bcan Please review this attached log. After repairing, the OK button was operated. Thank you YK.Jung |
|
|
Hi YK, Is there an "OK key not working" issue happened? I didn't find any issue happened in the log. |
|
|
Hi Bcan Until the time below, an issue was observed that the OK button did not work. .. .. -- OK key not working -- .. [09-17 17:07:51.244] atvr_remove: hdev->name = BRM_BA01_0E8 removed, num 1->0 .. .. -- OK key working -- .. But when I checked the logfile, there was no log in logcat. Perhaps the log was collected in a missing state. we need to test it again. Thank you YK.Jung |
|
|
Hi Bcan, Please commit the #c16724 to BFX-AT100_5.4.3 branch until Korea time 4 PM. FW build is scheduled and this modification must be include. Please use BPM-37834 prefix when commit it. Thank you. Kim |
|
|
Hi JunGyu Push done. Please check it. BR, Kinbay |
|
|
Hi Bcan, Kinbay. The "OK key is not working" issue is still reproduce on field, and SKB shared the log file when the issue is occurring after applying new debug patch. // Kernel log dmesg.txt:3377:[02-08 20:58:08.525] key down 2 dmesg.txt:3383:[02-08 20:58:09.335] key down 6 dmesg.txt:3532:[02-08 20:58:18.987] key down 232 dmesg.txt:3536:[02-08 20:58:20.123] key down 232 dmesg.txt:3540:[02-08 20:58:22.834] key down 232 dmesg.txt:3546:[02-08 20:58:23.735] key down 108 dmesg.txt:3550:[02-08 20:58:26.007] key down 103 // logcat main.log.1:1764:02-08 20:58:09.503 3779 3891 I WindowManager: interceptKeyTq keycode=8 interactive=true isWakeKey=false, sys.power.sleep_reason= main.log.1:1772:02-08 20:58:09.511 4777 4777 I BtvKeyEvent[6]-2024.09.26: checkBtvKeyCode outKeyCode : 8, name : 8 main.log.1:1851:02-08 20:58:09.661 3779 3891 I WindowManager: interceptKeyTq keycode=8 interactive=true isWakeKey=false, sys.power.sleep_reason= main.log.1:1860:02-08 20:58:09.670 4777 4777 I BtvKeyEvent[6]-2024.09.26: checkBtvKeyCode outKeyCode : 8, name : 8 main.log.1:1905:02-08 20:58:10.312 3779 3891 I WindowManager: interceptKeyTq keycode=12 interactive=true isWakeKey=false, sys.power.sleep_reason= main.log.1:1917:02-08 20:58:10.316 4777 4777 I BtvKeyEvent[6]-2024.09.26: checkBtvKeyCode outKeyCode : 12, name : 12 main.log.1:1981:02-08 20:58:10.514 3779 3891 I WindowManager: interceptKeyTq keycode=12 interactive=true isWakeKey=false, sys.power.sleep_reason= main.log.1:1990:02-08 20:58:10.518 4777 4777 I BtvKeyEvent[6]-2024.09.26: checkBtvKeyCode outKeyCode : 12, name : 12 main.log.1:3960:02-08 20:58:24.712 3779 3891 I WindowManager: interceptKeyTq keycode=20 interactive=true isWakeKey=false, sys.power.sleep_reason= main.log.1:3968:02-08 20:58:24.717 4777 4777 I BtvKeyEvent[6]-2024.09.26: checkBtvKeyCode outKeyCode : 20, name : 20 main.log.1:4122:02-08 20:58:24.914 3779 3891 I WindowManager: interceptKeyTq keycode=20 interactive=true isWakeKey=false, sys.power.sleep_reason= main.log.1:4128:02-08 20:58:24.918 4777 4777 I BtvKeyEvent[6]-2024.09.26: checkBtvKeyCode outKeyCode : 20, name : 20 main.log.1:4207:02-08 20:58:26.984 3779 3891 I WindowManager: interceptKeyTq keycode=19 interactive=true isWakeKey=false, sys.power.sleep_reason= main.log.1:4215:02-08 20:58:26.990 4777 4777 I BtvKeyEvent[6]-2024.09.26: checkBtvKeyCode outKeyCode : 19, name : 19 Please check the attached log file. Thank you. Kim |
|
|
Hi JunGyu, After analyzing the log, there are some conclusions listed below. 1. The root cause is outside the scope of our debug messages. 2. Because of (1), the key_check mechanism is useless. 3. The new debug scope should cover from the first line of EventHub::getEvents() to the line with message "===> traceKey D6, in getEvents". |
|
|
Hi Bcan, Thank you for analysis. Please prepare additional logs for debugging. After discussing with SKB, we will decide whether to add additional debugging logs. BTW, there are traces of the user entering the screensaver. [sys.current.top.package]: [com.google.android.backdrop] Please also review if it is related to this symptom. Thank you. KIm |
|
|
Hi Bcan, I have a question about key layout file. I can find the DPAD_CENTER is mapped duplicated on several key layout file as below. // vendor/foxconn/keyboards Vendor_005d_Product_0004.kl:40:key 232 DPAD_CENTER Vendor_005d_Product_0004.kl:41:key 352 DPAD_CENTER Vendor_005d_Product_0005.kl:40:key 232 DPAD_CENTER Vendor_005d_Product_0005.kl:41:key 352 DPAD_CENTER ... Is it okay if there were duplicate mappings like this? Please also check it. Thank you. Kim |
|
|
Hi Bcan, Could you please update the progress of this issue? Thank you. Kim |
|
|
@JunGyu KIM, FII already changed their engineer to Mr. Willin Deng, @Willin Deng, Could you follow up this issue ? This issue opened Nov. 2024. This issue is pending more than 3 month. If you cannot support it, then please consider to provide source code about this issue ASAP. Best Regards, SuhYoung YOON |
|
|
Hi Mr. Yoon, The source code is in Android Framework, and ALT shall have it already. May I know what the additional source code that ALT is asking for? |
|
|
Hi Sheila Tu, 1. DPAD_CENTER is defined twice in the keylayout file. It is necessary to check whether this affects this issue. 2. Currently, the FXN module (hid-skbrm.ko) log is output in the log when the issue occurs, but no log is output after that. Therefore, the log from the FXN module (hid-skbrm.ko) to the Android Framework needs to be checked, but only the Android Framework code has been modified so far. It seems necessary to review whether additional logs are needed in hid-skbrm.ko. Thank you. Kim |
|
|
Hi Mr. Kim, hid-skbrm.ko is listed among the required source codes from ALT. We are currently working with the ALT business team on the discussion. Once we reach a conclusion with them, we will release the requested source code. |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2022-11-29 19:00 | (ALTech) Younkwang Jung | New Issue | |
| 2022-11-29 19:00 | (ALTech) Younkwang Jung | File Added: 0130000101_20221129_38_D5_7A_DB_21_42.zip | |
| 2022-11-29 19:00 | (ALTech) Younkwang Jung | File Added: rcu_ok_missing.PNG | |
| 2022-11-29 19:00 | (ALTech) Younkwang Jung | Assigned To | => (ALTech) Younkwang Jung |
| 2022-11-29 19:00 | (ALTech) Younkwang Jung | Status | new => assigned |
| 2022-11-29 19:00 | (ALTech) Younkwang Jung | Assigned To | (ALTech) Younkwang Jung => (SW) Kerwin Chen |
| 2022-11-29 19:01 | (ALTech) Younkwang Jung | Issue Monitored: (ALTech) SY Yoon | |
| 2022-11-29 19:01 | (ALTech) Younkwang Jung | Issue Monitored: (ALTech) JunGyu Kim | |
| 2022-11-30 09:03 | (ALTech) Younkwang Jung | Note Added: 0011336 | |
| 2022-11-30 09:03 | (ALTech) Younkwang Jung | File Added: 0130000101_20221129_28_CD_C4_FB_A7_EF.zip | |
| 2022-11-30 10:58 | (SW) Kerwin Chen | Note Added: 0011341 | |
| 2022-11-30 11:20 | (ALTech) Younkwang Jung | Note Added: 0011343 | |
| 2022-11-30 14:50 | (ALTech) Younkwang Jung | Note Added: 0011350 | |
| 2022-11-30 17:40 | (SW) Kerwin Chen | Note Added: 0011353 | |
| 2022-11-30 17:41 | (SW) Kerwin Chen | Note Edited: 0011353 | |
| 2022-11-30 17:44 | (SW) Kerwin Chen | Note Edited: 0011353 | |
| 2022-11-30 18:34 | (ALTech) Younkwang Jung | Note Added: 0011354 | |
| 2022-11-30 18:34 | (ALTech) Younkwang Jung | File Added: 20221125_BFX-AT100_Log (2).zip | |
| 2022-12-01 08:27 | (ALTech) Younkwang Jung | Note Added: 0011357 | |
| 2022-12-01 14:04 | (SW) Kerwin Chen | Note Added: 0011360 | |
| 2022-12-01 14:05 | (SW) Kerwin Chen | Note Edited: 0011360 | |
| 2022-12-01 17:35 | (ALTech) Younkwang Jung | Note Added: 0011361 | |
| 2022-12-02 10:50 | (ALTech) Younkwang Jung | Note Added: 0011366 | |
| 2022-12-02 14:33 | (SW) Kerwin Chen | Note Added: 0011368 | |
| 2022-12-02 15:13 | (ALTech) Younkwang Jung | Note Added: 0011372 | |
| 2022-12-02 15:20 | (ALTech) Younkwang Jung | Note Edited: 0011372 | View Revisions |
| 2022-12-05 08:33 | (ALTech) Younkwang Jung | Note Added: 0011377 | |
| 2022-12-05 09:03 | (ALTech) Younkwang Jung | Note Added: 0011384 | |
| 2022-12-05 09:03 | (ALTech) Younkwang Jung | File Added: ME0035_20221205_ec_5c_68_1d_bc_f9.zip | |
| 2022-12-05 09:50 | (SW) Kerwin Chen | Note Added: 0011387 | |
| 2022-12-05 10:19 | (ALTech) Younkwang Jung | Note Added: 0011388 | |
| 2022-12-05 10:30 | (SW) Kerwin Chen | Note Added: 0011389 | |
| 2022-12-08 13:06 | (ALTech) Younkwang Jung | Note Added: 0011431 | |
| 2022-12-08 13:06 | (ALTech) Younkwang Jung | File Added: kernel.log | |
| 2022-12-08 13:12 | (ALTech) Younkwang Jung | Note Added: 0011432 | |
| 2022-12-12 09:44 | (ALTech) Younkwang Jung | Note Added: 0011455 | |
| 2022-12-12 11:01 | (SW) Kerwin Chen | Note Added: 0011463 | |
| 2022-12-12 11:35 | (ALTech) Younkwang Jung | Issue Monitored: (SW) Jacky Chiang | |
| 2022-12-12 11:47 | (ALTech) Younkwang Jung | Note Added: 0011465 | |
| 2022-12-12 15:25 | (SW) Kerwin Chen | Assigned To | (SW) Kerwin Chen => (SW) Bcan Yeh |
| 2022-12-12 15:26 | (SW) Kerwin Chen | Note Added: 0011467 | |
| 2022-12-13 12:17 | (ALTech) Younkwang Jung | Note Added: 0011472 | |
| 2022-12-14 10:43 | (SW) Bcan Yeh | Note Added: 0011477 | |
| 2022-12-14 10:49 | (SW) Bcan Yeh | Note Edited: 0011477 | |
| 2022-12-14 15:49 | (ALTech) Younkwang Jung | Note Added: 0011486 | |
| 2022-12-15 17:03 | (SW) Bcan Yeh | Note Added: 0011496 | |
| 2022-12-16 13:19 | (ALTech) Younkwang Jung | Note Added: 0011499 | |
| 2022-12-16 16:16 | (SW) Bcan Yeh | Note Added: 0011501 | |
| 2022-12-16 18:01 | (ALTech) Younkwang Jung | Note Added: 0011502 | |
| 2022-12-23 14:13 | (SW) Bcan Yeh | Note Added: 0011560 | |
| 2022-12-23 14:13 | (SW) Bcan Yeh | File Added: traceKey1.diff | |
| 2022-12-23 14:13 | (SW) Bcan Yeh | File Added: traceKey2.diff | |
| 2022-12-27 15:09 | (ALTech) Younkwang Jung | Note Added: 0011585 | |
| 2022-12-28 09:22 | (ALTech) Younkwang Jung | Note Added: 0011592 | |
| 2022-12-28 10:19 | (SW) Bcan Yeh | Note Added: 0011594 | |
| 2023-01-04 15:25 | (ALTech) Younkwang Jung | Note Added: 0011648 | |
| 2023-01-04 18:22 | (SW) Bcan Yeh | Note Added: 0011658 | |
| 2023-01-05 08:15 | (ALTech) Younkwang Jung | Note Added: 0011662 | |
| 2023-01-05 11:08 | (SW) Bcan Yeh | Note Added: 0011671 | |
| 2023-01-05 11:08 | (SW) Bcan Yeh | File Added: 1672887915846.jpg | |
| 2023-01-05 11:08 | (SW) Bcan Yeh | File Added: 1672887961674.jpg | |
| 2023-01-27 14:10 | (ALTech) Younkwang Jung | Note Added: 0011859 | |
| 2023-01-30 09:26 | (SW) Bcan Yeh | Note Added: 0011866 | |
| 2024-05-27 18:15 | (ALTech) JunGyu Kim | Note Added: 0015899 | |
| 2024-05-27 18:15 | (ALTech) JunGyu Kim | File Added: BC_F4_D4_F7_FC_A5_20240518235003.zip | |
| 2024-05-30 12:32 | (ALTech) Younkwang Jung | Note Added: 0015915 | |
| 2024-05-30 18:16 | (SW) Bcan Yeh | Note Added: 0015927 | |
| 2024-06-04 11:57 | (ALTech) Younkwang Jung | Note Added: 0015945 | |
| 2024-06-07 10:22 | (SW) Bcan Yeh | Note Added: 0015966 | |
| 2024-06-07 10:23 | (SW) Bcan Yeh | Note Edited: 0015966 | |
| 2024-06-07 14:34 | (ALTech) Younkwang Jung | Issue Monitored: (ALTech) Jong-Hwa JUNG | |
| 2024-06-07 14:36 | (ALTech) Younkwang Jung | Note Added: 0015968 | |
| 2024-06-07 14:36 | (ALTech) Younkwang Jung | Note Edited: 0015968 | View Revisions |
| 2024-06-13 13:59 | (SW) Bcan Yeh | Note Added: 0016006 | |
| 2024-06-13 13:59 | (SW) Bcan Yeh | File Added: traceKey3.diff | |
| 2024-06-14 18:56 | (ALTech) JunGyu Kim | Note Added: 0016045 | |
| 2024-06-14 18:56 | (ALTech) JunGyu Kim | File Added: 4C_D5_77_FE_B9_BF_20240607185142.zip | |
| 2024-06-14 18:56 | (ALTech) JunGyu Kim | File Added: 28_CD_C4_FC_21_E1_20240607161343.zip | |
| 2024-06-14 18:56 | (ALTech) JunGyu Kim | File Added: D4_1B_81_FE_E8_91_20240607102356.zip | |
| 2024-06-17 11:12 | (SW) Bcan Yeh | Note Added: 0016050 | |
| 2024-07-23 16:47 | (ALTech) Younkwang Jung | Note Added: 0016325 | |
| 2024-07-23 16:49 | (ALTech) Younkwang Jung | Priority | urgent => normal |
| 2024-07-23 16:49 | (ALTech) Younkwang Jung | Due Date | => 2024-07-26 17:48 |
| 2024-07-23 16:49 | (ALTech) Younkwang Jung | Issue Monitored: (ALTech) Wooshin Kang | |
| 2024-07-25 09:32 | (ALTech) Younkwang Jung | Issue Monitored: (SW) Kinbay Wu | |
| 2024-07-25 09:34 | (ALTech) Younkwang Jung | Note Added: 0016331 | |
| 2024-07-26 10:40 | (SW) Bcan Yeh | Note Added: 0016338 | |
| 2024-07-29 17:33 | (SW) Bcan Yeh | Note Added: 0016352 | |
| 2024-07-29 17:33 | (SW) Bcan Yeh | File Added: 0001-Add-debug-messages-for-losing-OK-key-1-2.patch | |
| 2024-07-29 17:33 | (SW) Bcan Yeh | File Added: 0001-Add-debug-messages-for-losing-OK-key-2-2.patch | |
| 2024-07-30 08:35 | (ALTech) Wooshin Kang | Note Added: 0016353 | |
| 2024-08-07 13:49 | (ALTech) Younkwang Jung | Note Added: 0016406 | |
| 2024-08-07 17:15 | (SW) Bcan Yeh | Note Added: 0016410 | |
| 2024-08-08 14:46 | (ALTech) Younkwang Jung | Due Date | 2024-07-26 17:48 => 2024-07-31 17:48 |
| 2024-08-08 14:46 | (ALTech) Younkwang Jung | Due Date | 2024-07-31 17:48 => 2024-08-14 17:48 |
| 2024-08-20 08:06 | (ALTech) Younkwang Jung | Note Added: 0016482 | |
| 2024-08-22 08:46 | (SW) Bcan Yeh | Note Added: 0016528 | |
| 2024-08-22 09:22 | (ALTech) Younkwang Jung | Note Added: 0016530 | |
| 2024-08-23 11:34 | (SW) Bcan Yeh | Note Added: 0016557 | |
| 2024-08-23 11:34 | (SW) Bcan Yeh | File Added: 0001-Add-debug-message-for-missing-OK-key-1-3.patch | |
| 2024-08-23 11:34 | (SW) Bcan Yeh | File Added: 0001-Add-debug-message-for-missing-OK-key-2-3.patch | |
| 2024-08-23 11:34 | (SW) Bcan Yeh | File Added: 0001-Add-debug-message-for-missing-OK-key-3-3.patch | |
| 2024-08-23 15:46 | (SW) Bcan Yeh | Note Added: 0016559 | |
| 2024-08-23 15:46 | (SW) Bcan Yeh | File Added: update_0001-Add-debug-message-for-missing-OK-key-1-3.patch | |
| 2024-08-23 15:46 | (SW) Bcan Yeh | File Added: update_0001-Add-debug-message-for-missing-OK-key-2-3.patch | |
| 2024-08-23 15:46 | (SW) Bcan Yeh | File Added: update_0001-Add-debug-message-for-missing-OK-key-3-3.patch | |
| 2024-08-26 08:00 | (ALTech) Younkwang Jung | Note Added: 0016560 | |
| 2024-08-26 08:00 | (ALTech) Younkwang Jung | Due Date | 2024-08-14 17:48 => 2024-08-30 17:48 |
| 2024-08-28 08:51 | (ALTech) Younkwang Jung | Note Added: 0016588 | |
| 2024-08-28 08:51 | (ALTech) Younkwang Jung | File Added: BFX-AT100_20240827-095153.zip | |
| 2024-08-28 08:52 | (ALTech) Younkwang Jung | Due Date | 2024-08-30 17:48 => 2024-09-04 17:48 |
| 2024-09-02 10:42 | (SW) Bcan Yeh | Note Added: 0016621 | |
| 2024-09-09 11:03 | (ALTech) Younkwang Jung | Note Added: 0016686 | |
| 2024-09-09 11:03 | (ALTech) Younkwang Jung | File Added: logcat.log.0048.zip | |
| 2024-09-09 11:03 | (ALTech) Younkwang Jung | File Added: logcat.log.0062.zip | |
| 2024-09-09 11:03 | (ALTech) Younkwang Jung | File Added: logcat.log.0329.zip | |
| 2024-09-09 11:03 | (ALTech) Younkwang Jung | File Added: MonkeyTest_for_RCU.zip | |
| 2024-09-12 21:19 | (SW) Bcan Yeh | Note Added: 0016705 | |
| 2024-09-13 08:07 | (ALTech) Younkwang Jung | Note Added: 0016706 | |
| 2024-09-13 08:07 | (ALTech) Younkwang Jung | File Added: ME0035_20240902_b4_b5_b6_ff_cf_14 (1).zip | |
| 2024-09-13 15:24 | (SW) Bcan Yeh | Note Added: 0016723 | |
| 2024-09-13 15:25 | (SW) Bcan Yeh | Note Added: 0016724 | |
| 2024-09-13 15:25 | (SW) Bcan Yeh | File Added: 0001-Add-debug-message-for-missing-OK-key-1-3_20240913.patch | |
| 2024-09-13 15:25 | (SW) Bcan Yeh | File Added: 0001-Add-debug-message-for-missing-OK-key-2-3_20240913.patch | |
| 2024-09-13 15:25 | (SW) Bcan Yeh | File Added: 0001-Add-debug-message-for-missing-OK-key-3-3_20240913.patch | |
| 2024-09-17 16:27 | (ALTech) Younkwang Jung | Note Added: 0016725 | |
| 2024-09-17 16:27 | (ALTech) Younkwang Jung | File Added: BFX-AT100_20240917-171004 (2).zip | |
| 2024-09-18 09:32 | (SW) Bcan Yeh | Note Added: 0016726 | |
| 2024-09-19 09:13 | (ALTech) Younkwang Jung | Note Added: 0016727 | |
| 2024-10-24 12:18 | (ALTech) JunGyu Kim | Note Added: 0016889 | |
| 2024-10-24 13:08 | (ALTech) JunGyu Kim | Note Edited: 0016889 | |
| 2024-10-24 14:44 | (SW) Kinbay Wu | Note Added: 0016890 | |
| 2025-02-10 10:41 | (ALTech) JunGyu Kim | Note Added: 0017308 | |
| 2025-02-10 10:41 | (ALTech) JunGyu Kim | File Added: A8_3B_76_FD_9F_2F_20250208210157.zip | |
| 2025-02-12 16:00 | (SW) Bcan Yeh | Note Added: 0017319 | |
| 2025-02-12 16:01 | (SW) Bcan Yeh | Assigned To | (SW) Bcan Yeh => (SW) Willin Deng |
| 2025-02-12 18:41 | (ALTech) JunGyu Kim | Note Added: 0017321 | |
| 2025-02-14 16:22 | (ALTech) JunGyu Kim | Note Added: 0017333 | |
| 2025-03-10 13:18 | (ALTech) JunGyu Kim | Note Added: 0017369 | |
| 2025-03-10 13:51 | (ALTech) SY Yoon | Issue Monitored: (PM) Sheila Tu | |
| 2025-03-10 13:52 | (ALTech) SY Yoon | Issue Monitored: (SW) Willin Deng | |
| 2025-03-10 13:54 | (ALTech) SY Yoon | Note Added: 0017370 | |
| 2025-03-10 14:32 | (PM) Sheila Tu | Note Added: 0017371 | |
| 2025-03-10 16:41 | (ALTech) JunGyu Kim | Note Added: 0017372 | |
| 2025-03-10 17:07 | (PM) Sheila Tu | Note Added: 0017373 | |
| 2025-07-04 16:55 | (PM) Sheila Tu | Status | assigned => closed |
| 2025-07-04 16:55 | (PM) Sheila Tu | Resolution | open => fixed |